2013-05-02 111 views
0

我有这样烧瓶SQLAlchemy的SELECT COUNT()

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' object is not callable

请帮忙,谢谢

回答

0

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

你所试图做的是类似于:

class A(object): 
    pass 

a_obj = A() 
print a_obj() 

你不能调用一个实例。

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

不确定为什么你需要代码中的第一行。

你可以这样做:

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

是的,谢谢你提吧:)不过我还是在这行有错误'查询= Notification.query(db.func.count(Notification.id) )也许是db.func.count()' – rizarc 2013-05-02 05:17:08

+0

这是给出错误的那一行。你有什么改变?你不能'查询(db.func.count())'。你将不得不在'query'上使用'query.filter()'或其他方法。你试图使用'query'本身作为你不能做的方法,因为它是一个实例。 – 2013-05-02 05:39:48

+0

现在我明白调用一个实例,我有这个问题的另一个解决方案,我使用paginate()从查询结果中获得总数。像这样'query.paginate(1,per_page = 10,error_out = True)'它适用于我感谢:)顺便说一句,我在Python初学者 – rizarc 2013-05-02 07:25:55