9
データベースの相対パスとしてファイルパスを保存していますが、ハイブリッドプロパティを使用してマップされたときに絶対パスに変換します。このプロパティを使用してクエリを実行すると、エラーがスローされます。こちらのモデルです:私は(refがUnicode文字列です)このクエリを実行するとSQLAlchemyのハイブリッドプロパティのクエリ
class File(Base):
__tablename__ = 'files'
...
_f_path = Column(Unicode(30))
...
@hybrid_property
def f_path(self):
env = shelve.open('environment')
return os.path.join(env['project_dir'], self._f_path)
@f_path.setter
def f_path(self, _f_path):
self._f_path = _f_path
:
session.query(File).filter_by(f_path=ref).first()
それは私に、このエラーを与える:
File "/Users/Ben/Dropbox/Giraffe/giraffe_server/giraffe/file_handlers/maya.py", line 135, in process_file
rf = session.query(File).filter_by(f_path=str(ref)).first()
File "build/bdist.macosx-10.7-intel/egg/sqlalchemy/orm/query.py", line 1211, in filter_by
for key, value in kwargs.iteritems()]
File "build/bdist.macosx-10.7-intel/egg/sqlalchemy/orm/util.py", line 597, in _entity_descriptor
return getattr(entity, key)
File "build/bdist.macosx-10.7-intel/egg/sqlalchemy/ext/hybrid.py", line 681, in __get__
return self.expr(owner)
File "/Users/Ben/Dropbox/Giraffe/giraffe_server/giraffe/model.py", line 133, in f_path
print "\n\n\n[model.py:[email protected]_path hybrid_property] returning: ", os.path.join(env['project_dir'], self._f_path)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py", line 66, in join
if b.startswith('/'):
File "build/bdist.macosx-10.7-intel/egg/sqlalchemy/sql/expression.py", line 3426, in __nonzero__
raise TypeError("Boolean value of this clause is not defined")
TypeError: Boolean value of this clause is not defined
あなたのハイブリッドプロパティが返す必要があります
パーフェクト。私はまだSQLAlchemyとSQLに関してもっと多くのことを学びました。どうもありがとう。 –