我想使用一个函数来确定在SQLAlchemy查询中选择了哪些行。这是设置...
我们有一个基本的SQLAlchemy映射对象:
class Foo(base):
foo_id = Column(Integer, primary_key=True)
foo_data = Column(String(255))
现在,如果要查询具有特定值的所有表行foo_data
,可以执行以下操作:
session.query(Foo).filter(Foo.foo_data == 'some data').all()
现在,我希望Foo.foo_data == 'some data'
检查在一个函数中进行...因此我们的查询如下所示:
session.query(Foo).filter(check_foo(Foo.foo_data)).all()
其中check_foo
的样子:
def check_foo(foo_data):
if foo_data == 'foo':
return True
else:
return False
这种事情有可能吗?显然,对于这种琐碎的情况,这确实是不必要的,但是对于更复杂的情况,这将非常有用。
您可以使用混合属性
from sqlalchemy.ext.hybrid import hybrid_method
class Foo(base):
foo_id = Column(Integer, primary_key=True)
foo_data = Column(String(255))
@hybrid_method
def check_foo(self):
return self.foo_data == 'foo'
@check_foo.expression
def check_foo(cls):
return cls.foo_data == 'foo'
session.query(Foo).filter(Foo.check_foo()).all()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句