如果您经常需要这样做,并且/或者计数是Tab1
模型不可或缺的一部分,则应该使用混合属性,如其他答案中所述。另一方面,如果只需要一个查询就可以使用Query.label()
,则可以使用或创建标量子查询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)