2011-02-01 120 views
3

我有一些SQLAlchemy models(聲明)和一些查詢寫,如:SQLAlchemy中是否有與django的管理者相當的東西?

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

因爲我必須使用上面的查詢在我的代碼好幾次我想這樣做一遍又一遍地重複它更好。我知道在django中,您可以將managers放入模型中。

在SQLAlchemy中是否有與django的管理者相當的東西?或者也許另一種方式來做到這一點?

回答

8

對於常見查詢,我將一個類方法添加到映射(ORM)類。 例如:

class User(object): 

    @classmethod 
    def get_by_username(cls, dbsession, username): 
     return dbsession.query(cls).filter(cls.username==username).one() 

的映射類實質上是經理。

+0

是的好主意,我應該考慮過之前謝謝! – 2011-02-02 08:02:49

1

我最終做的是創建管理員類。我只在SA對象上實現實例方法,幷包裝任何爲Mgr類中的模型實例的列表/ etc生成查詢或生成查詢的東西。

class MyModelMgr(object): 
    @staticmethod 
    get_something(param): 
     return MyModel.query.filter(MyModel.somefield==param).all() 

class MyModel(Base): 
    ........ 
相關問題