PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Genera sql con sottoquery come colonna nell'istruzione select usando SQLAlchemy

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.