是否有方法使SQLAlchemy生成具有自定义列的查询,该自定义列是与当前行相关联的子查询:
SELECT
tab1.id,
tab1.col1,
...,
(
SELECT count(1) FROM tab2
WHERE tab2.tab1_id = tab1.id
GROUP BY tab2.col1
) as cnt
FROM tab1
WHERE ...
LIMIT 100
使用ORM API?
session.query(Tab1, ?(subquery for additional column)?).filter(...).limit(100)
我使用的是PostgreSQL 9.3和旧版本的SQLAlchemy 0.9.8
如果您经常需要这样做,并且/或者计数是} 或^{} 创建标量子查询:
Tab1
模型不可分割的一部分,那么您应该使用混合属性,如另一个答案中所述。另一方面,如果您只需要一个查询,那么您可以使用^{子查询将automatically correlate它可以从封闭查询中得到什么。
你可以这样做,但它的工作方式与你写的完全不同。可以创建Tab1的属性,该属性取决于与tab2的关系(假设
tab2.tab1_id
是外键,它应该是外键)。你的模特看起来是这样的:
根据the docs on relationships
然后你可以添加
到父模型,按照this answer和more docs。
完成此操作后,可以使用与任何其他基于列的属性相同的属性进行筛选。
相关问题 更多 >
编程相关推荐