sqlalchemy按计数列过滤

Rom*_* M. 6 python sqlalchemy

我有一个用户查询,按每个用户拥有的订单数量(ordersCount)进行过滤.

User.query.filter('ordersCount>2')
Run Code Online (Sandbox Code Playgroud)

如果我运行它,它会说:"where子句中的未知列'ordersCount'"

根据我的经验,我应该使用这样的操作,因为mysql不会允许它不是表的一部分的字段,但如果我运行它而不是过滤器我得到:

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

那么如何过滤sqlalchemy中的计数列?

van*_*van 11

请参阅订购,分组,限制,偏移等文档.根据提供的示例代码以及您的订单存储在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)
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您将获得有user_id问题的用户.如果要检索User对象,只需创建s一个子查询并User使用此子查询加入查询以检索有问题的用法.