Kelompokkan menurut & fungsi hitung di sqlalchemy

Jawaban:

165

The dokumentasi di penghitungan mengatakan bahwa untuk group_bypermintaan lebih baik untuk digunakan func.count():

from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()
miniwark
sumber
16
dan berikut pernyataan lengkap untuk mereka yang menggunakan Table.queryproperti sebagai pengganti session.query():Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()
Jakub Kukul
2
@jkukul Ini seharusnya menjadi jawaban tersendiri - Saya selalu bertanya-tanya bagaimana cara mengatasi batasan ini saat melakukan subkueri dan ingin menggunakan group_by dan menghitung ..!
chris-sc
1
Pengeditan jawaban ini membuat kalimat pertama menjadi tidak berarti. "Lebih baik" dari apa ?
Mark Amery
33

Jika Anda menggunakan Table.queryproperti:

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

Jika Anda menggunakan session.query()metode (seperti yang dinyatakan dalam jawaban miniwark):

from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()
Jakub Kukul
sumber
+ satu untuk dengan entitas
Espoir Murhabazi
27

Anda juga dapat mengandalkan banyak kelompok dan persimpangannya:

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

Kueri di atas akan mengembalikan jumlah semua kemungkinan kombinasi nilai dari kedua kolom.

fccoelho.dll
sumber
Terima kasih atas pertanyaannya, sambil memikirkannya saya menemukan jawaban untuk pertanyaan terkait milik saya. ;-)
fccoelho