2011-06-05 60 views
5

我有一個用戶查詢按每個用戶的訂單數量(ordersCount)過濾。sqlalchemy filter by count column

User.query.filter('ordersCount>2') 

如果我運行它,它說:「未知列‘ordersCount’在‘where子句’」

從我的經驗,我應該使用具有這樣操作,因爲MySQL不會允許它的領域不表的一部分,但如果我有具有過濾器,而不是運行它,我得到:

(1054, "Unknown column 'ordersCount' in 'having clause'") 'SELECT count(1) AS count_1 \nFROM user \nHAVING ordersCount > 2'() 

那麼,如何在SQLAlchemy中篩選數列?

回答

11

請參閱文檔Ordering, Grouping, Limiting, Offset...ing。根據所提供的示例代碼和貴公司的訂單都存儲在orders表的假設,你的版本將類似於:

>>> s = select([orders.c.user_id, func.count(orders.c.id)]).\ 
...  group_by(orders.c.user_id).having(func.count(orders.c.id) > 2) 

這樣你會得到用戶的user_id的問題。如果要檢索User對象,只需對s進行子查詢並將您的User查詢與此子查詢結合使用以檢索相關用途。