sqlalchemy中的分组和计数功能

Posted

技术标签:

【中文标题】sqlalchemy中的分组和计数功能【英文标题】:Group by & count function in sqlalchemy 【发布时间】:2010-11-06 07:59:23 【问题描述】:

我想要 sqlalchemy 中的“分组和计数”命令。我该怎么做?

【问题讨论】:

好像是***.com/questions/370174/…的副本 【参考方案1】:

如果您使用的是Table.query 属性:

from sqlalchemy import func
Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()

如果您使用session.query() 方法(如 miniwark 的回答中所述):

from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()

【讨论】:

太棒了。题。我怎样才能做到这一点? count(column_name) as total_count【参考方案2】:

documentation on counting 表示对于group_by 查询,最好使用func.count()

from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()

【讨论】:

这里是使用Table.query属性而不是session.query()的人的完整声明:Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all() @jkukul 这应该是一个独立的答案 - 我一直想知道在进行子查询时如何绕过这个限制并且想使用 group_by 和 count..! 对此答案的编辑使第一句话毫无意义。比什么“更好”?【参考方案3】:

您还可以指望多个组及其交集:

self.session.query(func.count(Table.column1),Table.column1, Table.column2).group_by(Table.column1, Table.column2).all()

上面的查询将返回两列中所有可能的值组合的计数。

【讨论】:

感谢您的提问,在思考的同时,我找到了一个相关问题的答案。 ;-)

以上是关于sqlalchemy中的分组和计数功能的主要内容,如果未能解决你的问题,请参考以下文章

Flask-SQLAlchemy 学习总结

SQlAlchemy的增删改查

flask-sqlalchemy的使用

flask_sqlalchemy

尝试连接数据库和 Web 容器时 SQLAlchemy 连接被拒绝

SQLAlchemy:一个查询中的多个计数