python - sqlalchemy 按计数列过滤

标签 python sqlalchemy

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

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

如果我运行它,它会显示:“‘where 子句’中的未知列‘ordersCount’”

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

(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 查询与此子查询连接起来以检索有问题的用途。

关于python - sqlalchemy 按计数列过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6244038/

相关文章:

python 3.0 "with"语法错误?

python - 使用 zip() 函数时如何解决以下错误?类型错误 : 'list' object is not callable

python - 使用 csv 文件,查找温度平均值

python - 线性回归 - 图像

python - 在执行查询之前将日期时间转换为 SQLAlchemy 模型中的 unix 时间戳?

mac osx上的python位置

python - 如何使用 Flask 中的 Python 和 Flask-SQLAlchemy 将当前 session 设置为 'logged in'?

python - SQLAlchemy - 如何映射只读(或计算)属性

postgresql - 使用 order_by 和分页的 Flask-SqlAlchemy 查询非常慢

python - 为什么我们要在sqlalchemy中设置local_infile=1来加载本地文件? sqlalchemy 中不允许加载文件的问题