Ich möchte einen Befehl "Gruppieren nach und Zählen" in sqlalchemy. Wie kann ich das machen?
Ich möchte einen Befehl "Gruppieren nach und Zählen" in sqlalchemy. Wie kann ich das machen?
Antworten:
Die Dokumentation zum Zählen besagt, dass es für group_by
Abfragen besser ist, Folgendes zu verwenden func.count()
:
from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()
Table.query
Eigentum anstelle von session.query()
:Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()
Wenn Sie eine Table.query
Eigenschaft verwenden:
from sqlalchemy import func
Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()
Wenn Sie eine session.query()
Methode verwenden (wie in der Antwort von miniwark angegeben):
from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()
Sie können auch auf mehrere Gruppen und deren Schnittpunkte zählen:
self.session.query(func.count(Table.column1),Table.column1, Table.column2).group_by(Table.column1, Table.column2).all()
Die obige Abfrage gibt die Anzahl aller möglichen Wertekombinationen aus beiden Spalten zurück.