我想在sqlalchemy中使用“group by and count”命令。我怎么能这样做?
答案 0 :(得分:128)
documentation on counting表示对于group_by
次查询,最好使用func.count()
:
from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()
答案 1 :(得分:25)
您还可以指望多个群组及其交叉点:
self.session.query(func.count(Table.column1),Table.column1, Table.column2).group_by(Table.column1, Table.column2).all()
上面的查询将返回两列中所有可能的值组合的计数。
答案 2 :(得分:15)
如果您使用的是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()