sqlalchemy中的分组和计数功能

Naz*_*san 89 python group-by sqlalchemy count

我想在sqlalchemy中使用"group by and count"命令.我怎样才能做到这一点?

min*_*ark 142

关于计数文档说,对于group_by查询,最好使用func.count():

from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()
Run Code Online (Sandbox Code Playgroud)

  • 这里是那些使用`Table.query`属性而不是`session.query()`的完整语句:`Table.query.with_entities(Table.column,func.count(Table.column)).group_by(Table.column) ).所有()` (9认同)
  • @jkukul 这应该是它自己的答案-我一直想知道在执行子查询时如何解决此限制并想使用 group_by 和 count ..! (2认同)

fcc*_*lho 27

您还可以依靠多个组及其交集:

self.session.query(func.count(Table.column1),Table.column1, Table.column2).group_by(Table.column1, Table.column2).all()
Run Code Online (Sandbox Code Playgroud)

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


Jak*_*kul 21

如果您正在使用Table.query财产:

from sqlalchemy import func
Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()
Run Code Online (Sandbox Code Playgroud)

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

from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()
Run Code Online (Sandbox Code Playgroud)