2013-05-02 4 views
0

У меня есть запрос, как этотколбы-SQLAlchemy выберите отсчет()

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

+0

Это строка, которая дает ошибку. Что вы изменили? Вы не можете выполнить запрос (db.func.count()) '. Вам нужно будет использовать 'query.filter()' или какой-либо другой метод в 'query'. Вы пытаетесь использовать 'query' как метод, который вы не можете сделать, потому что это экземпляр. –

+0

теперь я понимаю о вызове экземпляра, у меня есть другие решения для этой проблемы, я использую paginate(), чтобы получить общее количество из результата запроса. вроде this 'query.paginate (1, per_page = 10, error_out = True)' он работает для меня спасибо :) кстати i'am beginner in python – rizarc

Смежные вопросы