PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Générer sql avec une sous-requête en tant que colonne dans l'instruction select à l'aide de SQLAlchemy

Si vous en avez souvent besoin et/ou que le décompte fait partie intégrante de votre Tab1 modèle, vous devez utiliser une propriété hybride telle que décrite dans l'autre réponse. Si, d'autre part, vous n'en avez besoin que pour une seule requête, vous pouvez simplement créer la sous-requête scalaire en utilisant Query.label() , ou 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 sous-requête corrélera automatiquement ce qu'elle peut à partir de la requête englobante.