在 sqlalchemy 中计算子查询

Posted

技术标签:

【中文标题】在 sqlalchemy 中计算子查询【英文标题】:count subquery in sqlalchemy 【发布时间】:2022-01-24 00:55:39 【问题描述】:

我在将子查询转换为 sqlalchemy 时遇到了一些问题。我有两个表,它们都有一个作为外键的 store_id 列(但它不是直接的多对多关系),我需要从表 1 中返回 id、store_id 和名称以及记录数来自表 2 的也具有相同 store_id 的。我知道我将用来返回这些记录的 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;

【问题讨论】:

这可能会有所帮助:***.com/questions/38878897/… 或 ***.com/questions/18227100/… 您好,感谢您的回复,我对如何在 sqlalchemy 中创建子查询并不感到困惑,只是对如何创建这个特定的子查询感到困惑。 【参考方案1】:

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

Generate sql with subquery as a column in select statement using SQLAlchemy

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"))

【讨论】:

以上是关于在 sqlalchemy 中计算子查询的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Sqlalchemy ORM 查询结果转换为包含关系的单个联接表?

如何在与 SQLAlchemy 和 psycopg2 的 PostgreSQL 连接上设置“lock_timeout”?

在 SQLAlchemy 中以特定格式按日期分组

flask-sqlalchemy的使用

flask_sqlalchemy

SQlAlchemy的增删改查