计算sqlalchemy中的子查询

count subquery in sqlalchemy

我在将子查询转换为 sqlalchemy 时遇到了一些问题。我有两个 table,它们都有一个 store_id 列,它是一个外键(但它不是直接的多对多关系),我需要 return id , store_id 和 table 1 中的名称以及 table 2 中也具有相同 store_id 的记录数。我知道我将用于 return 那些记录的 SQL 我现在确定如何使用 sqlalchemy 来做到这一点。

SELECT
table_1.id
table_1.store_id,
table_1.name,
(
    SELECT
        count(table_2.id)
    FROM
        table_2 
    WHERE
        table_1.store_id = table_2.store_id
) AS store_count FROM table_1;

这个post实际上回答了我的问题。我最初搜索时一定错过了它。下面是我的解决方案。

store_count = session.query(func.count(Table2.id)).filter(Table2.store_id == Table1.store_id)

session.query.add_columns(Table1.id, Table1.name, Table1.store_id, store_count.label("store_count"))