【问题标题】:flask-sqlalchemy select count()烧瓶-sqlalchemy 选择计数()
【发布时间】:2013-05-02 12:48:06
【问题描述】:

我有这样的查询

query = Notification.query(db.func.count(Notification.id))
query = query.filter(Notification.read == False)
query = query.filter(Notification.id == recv_id)
return query.all()

我遇到了这样的错误

query = Notification.query(db.func.count(Notification.id)) TypeError: 'BaseQuery' 对象不可调用

请帮忙,谢谢

【问题讨论】:

    标签: python flask-sqlalchemy


    【解决方案1】:

    您的第一行引发了错误。 query 是 BaseQuery 的一个实例,它是不可调用的。

    您尝试做的类似于:

    class A(object):
        pass
    
    a_obj = A()
    print a_obj()
    

    你不能调用实例。

    你应该在实例上调用一些方法。

    不知道为什么您需要代码中的第一行。

    你可以这样做:

    Notification.query.filter(Notification.read == False)
    

    【讨论】:

    • 是的,谢谢你提到它:) 但我在这一行仍然遇到错误query = Notification.query(db.func.count(Notification.id)) maybe the db.func.count()
    • 这是给出错误的行。你有什么改变?你不能做query(db.func.count())。您将不得不在query 上使用query.filter() 或其他方法。您正在尝试将 query 本身用作您无法执行的方法,因为它是一个实例。
    • 现在我了解了调用实例,我对此问题有另一种解决方案,我使用 paginate() 从查询结果中获取总数。像这样query.paginate(1, per_page=10, error_out=True) 它对我有用,谢谢:) 顺便说一句,我是 python 的初学者
    猜你喜欢
    • 1970-01-01
    • 2012-12-29
    • 2014-07-20
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    相关资源
    最近更新 更多