PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Generieren Sie SQL mit Unterabfrage als Spalte in der Select-Anweisung mit SQLAlchemy

Wenn Sie dies häufig benötigen und/oder die Zählung ein fester Bestandteil Ihres Tab1 ist model, sollten Sie eine hybride Eigenschaft verwenden, wie in der anderen Antwort beschrieben. Wenn Sie dies andererseits nur für eine einzelne Abfrage benötigen, können Sie die skalare Unterabfrage einfach mit Query.label() erstellen , oder 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)

Die Unterabfrage korreliert automatisch so viel wie möglich mit der einschließenden Abfrage.