繁体   English   中英

sqlalchemy 按计数列过滤

[英]sqlalchemy filter by count column

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

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

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

根据我的经验,我应该在此类操作中使用,因为 mysql 不允许它用于不属于表的字段,但如果我使用而不是过滤器运行它,我会得到:

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

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

请参阅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查询与此子查询连接以检索相关用途。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM