2013-05-02 467 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