web-dev-qa-db-fra.com

Fonction de regroupement et de comptage dans sqlalchemy

Je veux une commande "grouper et compter" dans sqlalchemy. Comment puis-je faire ceci?

82
Nazmul Hasan

Le documentation sur le comptage indique que pour les requêtes group_by, Il est préférable d'utiliser func.count():

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

Vous pouvez également compter sur plusieurs groupes et leur intersection:

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

La requête ci-dessus renverra le nombre de toutes les combinaisons possibles de valeurs des deux colonnes.

27
fccoelho

Si vous utilisez la propriété Table.query:

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

Si vous utilisez la méthode session.query() (comme indiqué dans la réponse de miniwark):

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