假设我有一个名为Customer的类,它在sqlalchemy中定义来表示customer表。我想写一个搜索方法,这样...
results = Customer.search(query)将根据该方法返回结果。我想把它作为一个@classmethod来做吗?
@classmethod
def search(cls,query):
#do some stuff
return results是否可以使用日志服务代替DBSession.query?
DBSession.query(Customer).filter(...)
cls.query(Customer).filter(...)发布于 2012-01-20 07:11:12
我最近刚刚写了一些类似的代码,遵循this reference。
class Users(Base):
__tablename__ = 'users'
@classmethod
def by_id(cls, userid):
return Session.query(Users).filter(Users.id==userid).first()所以你第一个问题的答案似乎是“是”。第二个我不确定,因为我没有用cls代替DBSession。
发布于 2012-04-04 15:18:55
要使用
cls.query你必须给你的模型类分配一个query_property!
您可能还想在其他模型类中使用它,因此您可能希望在model/__init__.py中的某个模型基类中执行此操作
Base.query = Session.query_property()然后,您可以简单地编写:
cls.query.filter(...)请注意,您不再指定要查询的对象,这是通过使用query_property机制自动完成的。
https://stackoverflow.com/questions/8933877
复制相似问题