SQLAlchemy中是否有类似于Django管理器的东西?
我有一些SQLAlchemy模型(声明式)和一些查询需要写,比如:
Mymodel.query.filter(Mymodel.myfield=='lambda')
因为我在代码中需要多次使用上面的查询,所以我想找个更好的方法,而不是一次又一次地重复它。我知道在django中,可以通过在模型中放置管理器来实现这个功能。
在SQLAlchemy中有没有类似于django的管理器的东西?或者有没有其他的方法可以做到这一点?
2 个回答
1
我最终做的是创建管理类。我只在SA对象上实现实例方法,而把获取或生成模型实例列表等查询的功能放在Mgr类里。
class MyModelMgr(object):
@staticmethod
def get_something(param):
return MyModel.query.filter(MyModel.somefield==param).all()
class MyModel(Base):
........
11
对于常见的查询,我会在一个映射的(ORM)类中添加一个类方法。
举个例子:
class User(object):
@classmethod
def get_by_username(cls, dbsession, username):
return dbsession.query(cls).filter(cls.username==username).one()
这个映射的类基本上就是管理者。