首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表上的sqlalchemy搜索函数是否为classmethod?

表上的sqlalchemy搜索函数是否为classmethod?
EN

Stack Overflow用户
提问于 2012-01-20 05:51:34
回答 2查看 6.8K关注 0票数 5

假设我有一个名为Customer的类,它在sqlalchemy中定义来表示customer表。我想写一个搜索方法,这样...

代码语言:javascript
复制
results = Customer.search(query)

将根据该方法返回结果。我想把它作为一个@classmethod来做吗?

代码语言:javascript
复制
@classmethod
def search(cls,query):
    #do some stuff
    return results

是否可以使用日志服务代替DBSession.query?

代码语言:javascript
复制
DBSession.query(Customer).filter(...)
cls.query(Customer).filter(...)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-20 07:11:12

我最近刚刚写了一些类似的代码,遵循this reference

代码语言:javascript
复制
class Users(Base):
    __tablename__ = 'users'

    @classmethod
    def by_id(cls, userid):
        return Session.query(Users).filter(Users.id==userid).first()

所以你第一个问题的答案似乎是“是”。第二个我不确定,因为我没有用cls代替DBSession。

票数 7
EN

Stack Overflow用户

发布于 2012-04-04 15:18:55

要使用

代码语言:javascript
复制
cls.query

你必须给你的模型类分配一个query_property

您可能还想在其他模型类中使用它,因此您可能希望在model/__init__.py中的某个模型基类中执行此操作

代码语言:javascript
复制
Base.query = Session.query_property()

然后,您可以简单地编写:

代码语言:javascript
复制
cls.query.filter(...)

请注意,您不再指定要查询的对象,这是通过使用query_property机制自动完成的。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8933877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档