gpt4 book ai didi

python - SQLAlchemy 多列相关更新

转载 作者:太空狗 更新时间:2023-10-29 21:07:03 26 4
gpt4 key购买 nike

我已经能够使用文档中显示的相关更新构造 here更新表中的一列。

例如:

sel = select([UpdateTable.column]).\
where(UpdateTable.id == OrigTable.id)

up = update(OrigTable).values(column=sel)

生成的 SQL 如下:

UPDATE origtable SET column=(SELECT updatetable.column
FROM updatetable
WHERE updatetable.id = origtable.id)

是否可以使用 Declaritive 或 Query Api 来更新一个选择的多个列?

我正在尝试在 PostgreSQL 中模拟如下内容:

UPDATE origtable
SET
column1 = updatetable.column1,
column2 = updatetable.column2
FROM updatetable
WHERE origtable.id == updatetable.id

编辑:

目前的 SQLAlchemy api 似乎无法将此格式化为单个语句。

但是,使用来自 here 的解决方案似乎可以使用两个选择的解决方法.

最佳答案

因为这是针对 Postgresql 的,我们可以使用 SQLAlchemy 的 multiple table update支持。该文档仅适用于核心,但 Query API构建在 Core 之上,我们可以 apply that knowledge :

session.query(OrigTable).\
filter(OrigTable.id == UpdateTable.id).\
update({OrigTable.column1: UpdateTable.column1,
OrigTable.column2: UpdateTable.column2},
synchronize_session=False)

结果

UPDATE origtable
SET column1=updatetable.column1,
column2=updatetable.column2
FROM updatetable
WHERE origtable.id = updatetable.id

关于python - SQLAlchemy 多列相关更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32466179/

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