gpt4 book ai didi

python - 我们可以用 SQLAlchemy 进行相关查询吗

转载 作者:行者123 更新时间:2023-11-29 12:03:56 25 4
gpt4 key购买 nike

我正在尝试将此 SQL 查询转换为 Flask-SQLAlchemy 调用:

SELECT *
FROM "ENVOI"
WHERE "ID_ENVOI" IN (SELECT d."ID_ENVOI"
FROM "DECLANCHEMENT" d
WHERE d."STATUS" = 0
AND d."DATE" = (SELECT max("DECLANCHEMENT"."DATE")
FROM "DECLANCHEMENT"
WHERE "DECLANCHEMENT"."ID_ENVOI" = d."ID_ENVOI"))

如您所见,它使用子查询,最重要的是,其中一个子查询是相关查询(它使用在外部查询中定义的 d 表)。

我知道如何使用带有 subquery() 函数的子查询,但我找不到有关 SQLAlchemy 相关查询的文档。你知道怎么做吗?

最佳答案

是的,我们可以。

看看下面的例子(尤其是 correlate 方法调用):

from sqlalchemy import select, func, table, Column, Integer

table1 = table('table1', Column('col', Integer))
table2 = table('table2', Column('col', Integer))


subquery = select(
[func.if_(table1.c.col == 1, table2.c.col, None)]
).correlate(table1)

query = (
select([table1.c.col,
subquery.label('subquery')])
.select_from(table1)
)

if __name__ == '__main__':
print(query)

将产生以下查询

SELECT table1.col, (SELECT if(table1.col = :col_1, table2.col, NULL) AS if_1 
FROM table2) AS subquery
FROM table1

如您所见,如果您在 select 上调用 correlate,给定的 Table 将不会添加到它的 FROM -子句。即使您直接指定 select_from 也必须这样做,因为 SQLAlchemy 会很乐意添加它在列中找到的任何表。

关于python - 我们可以用 SQLAlchemy 进行相关查询吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38127298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com