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中的分组和计数功能的主要内容,如果未能解决你的问题,请参考以下文章