SQLAlchemy中的分组和计数函数

174 投票
3 回答
210934 浏览
提问于 2025-04-15 12:31

我想在sqlalchemy中使用一个“分组并计数”的命令。请问我该怎么做呢?

3 个回答

37

你还可以对多个组以及它们的交集进行计数:

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

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

66

如果你在使用 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()
257

关于计数的文档提到,对于使用 group_by 的查询,最好使用 func.count() 来进行计数:

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

撰写回答