SQLalchemy查询语法是详细的:
models.session.query(models.Person).filter(models.Person.first_name == 'David').all()
我已经阅读了几个指南,暗示表对象有查询方法,但无法在SQLalchemy文档中找到它,也无法在我的代码中使用它。我有什么理由不使用下面的代码吗?
class QueryMethod:
@classmethod
def filter(cls, *args, **kwargs):
return session.query(cls).filter(*args, **kwargs).all()
class Person(Base, QueryMethod):
__tablename__ = 'people'
id = Column(Integer, primary_key=True)
first_name = Column(String(255))
此继承允许的新查询语法:
models.Person.filter(models.Person.first_name=='David')
我的问题:是否有办法删除' models.Person'过滤方法调用中的位?
答案 0 :(得分:1)
我猜您正在寻找filter_by
。查询类似于
session.query(models.Person).filter_by(first_name="foo")
您使用的filter
类方法会对session
进行编码。我建议您明确地将会话传递给它,以便可以在不同的会话上重复使用相同的查询。