Se ne hai bisogno spesso e/o il conteggio è parte integrante della tua Tab1
modello, dovresti usare una proprietà ibrida come descritto nell'altra risposta. Se d'altra parte ne hai bisogno solo per una singola query, puoi semplicemente creare la sottoquery scalare usando Query.label()
o Query.as_scalar()
:
count_stmt = session.query(func.count(1)).\
filter(Tab2.tab1_id == Tab1.id).\
group_by(Tab2.col1).\
label('cnt')
session.query(Tab1, count_stmt).filter(...).limit(100)
La sottoquery correla automaticamente ciò che può dalla query di inclusione.