PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Gere sql com subconsulta como uma coluna na instrução select usando SQLAlchemy


Se você precisar disso com frequência e/ou a contagem for parte integrante do seu Tab1 model, você deve usar uma propriedade híbrida, conforme descrito na outra resposta. Se, por outro lado, você precisar disso apenas para uma única consulta, basta criar a subconsulta escalar usando 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)

A subconsulta correlacionará automaticamente o que puder da consulta anexa.