在SQLAlchemy中有没有与django的经理相同的东西?

时间:2011-02-01 18:31:35

标签: python django-models orm sqlalchemy

我有一些SQLAlchemy models(声明性)和一些要编写的查询:

Mymodel.query.filter(Mymodel.myfield=='lambda')

由于我必须在我的代码中多次使用上述查询,所以我想要反复重复一遍。我知道在django中你可以通过将managers放入模型中来实现。

在SQLAlchemy中有没有与django的经理相同的东西?或者也许是另一种方式呢?

2 个答案:

答案 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):
    ........