Jeśli często tego potrzebujesz i/lub licznik jest integralną częścią twojej Tab1
modelu, powinieneś użyć właściwości hybrydowej, takiej jak opisana w drugiej odpowiedzi. Jeśli z drugiej strony potrzebujesz tego tylko dla pojedynczego zapytania, możesz po prostu utworzyć podzapytanie skalarne za pomocą Query.label()
lub 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)
Podzapytanie automatycznie skoreluje to, co może z otaczającego zapytania.