我有一些SQLAlchemy models(声明性)和一些要编写的查询:
Mymodel.query.filter(Mymodel.myfield=='lambda')
由于我必须在我的代码中多次使用上述查询,所以我想要反复重复一遍。我知道在django中你可以通过将managers放入模型中来实现。
在SQLAlchemy中有没有与django的经理相同的东西?或者也许是另一种方式呢?
答案 0 :(得分:9)
对于常见查询,我将一个类方法添加到映射(ORM)类。 例如:
class User(object):
@classmethod
def get_by_username(cls, dbsession, username):
return dbsession.query(cls).filter(cls.username==username).one()
映射的类本质上是管理器。
答案 1 :(得分:2)
我最终要做的是创建经理类。我只在SA对象上实现实例方法,并在Mgr类上包装任何为模型实例的列表/等提取/生成查询的内容。
class MyModelMgr(object):
@staticmethod
def get_something(param):
return MyModel.query.filter(MyModel.somefield==param).all()
class MyModel(Base):
........