在 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”?