Omi*_*nus 5 python oop sqlalchemy
假设我有一个名为Customer的类,它在sqlalchemy中定义以表示customer表.我想写一个搜索方法,以便......
results = Customer.search(query)
Run Code Online (Sandbox Code Playgroud)
将根据方法返回结果.我想以@classmethod的身份做到这一点吗?
@classmethod
def search(cls,query):
#do some stuff
return results
Run Code Online (Sandbox Code Playgroud)
我可以使用cls代替DBSession.query吗?
DBSession.query(Customer).filter(...)
cls.query(Customer).filter(...)
Run Code Online (Sandbox Code Playgroud)
小智 9
使用
cls.query
Run Code Online (Sandbox Code Playgroud)
你必须为query_property你的模型类指定一个!
您可能也希望在其他模型类中使用它,因此您可能希望在模型Base类中的某个位置执行此操作model/__init__.py:
Base.query = Session.query_property()
Run Code Online (Sandbox Code Playgroud)
然后你可以简单地写:
cls.query.filter(...)
Run Code Online (Sandbox Code Playgroud)
请注意,您不再指定要查询的对象,这是使用该query_property机制自动完成的.
我刚刚写了一些类似的代码,遵循这个参考.
class Users(Base):
__tablename__ = 'users'
@classmethod
def by_id(cls, userid):
return Session.query(Users).filter(Users.id==userid).first()
Run Code Online (Sandbox Code Playgroud)
所以第一个问题的答案似乎是"是".不确定第二个,因为我没有用cl替代DBSession.
| 归档时间: |
|
| 查看次数: |
4844 次 |
| 最近记录: |