amc*_*ley 8 python postgresql sqlalchemy
我已经能够使用此处文档中显示的相关更新构造来更新表中的一列.
例如:
sel = select([UpdateTable.column]).\
where(UpdateTable.id == OrigTable.id)
up = update(OrigTable).values(column=sel)
Run Code Online (Sandbox Code Playgroud)
哪个产生SQL如:
UPDATE origtable SET column=(SELECT updatetable.column
FROM updatetable
WHERE updatetable.id = origtable.id)
Run Code Online (Sandbox Code Playgroud)
是否可以使用Declaritive或Query Api更新选择的多个列?
我试图在PostgreSQL中模拟类似下面的内容:
UPDATE origtable
SET
column1 = updatetable.column1,
column2 = updatetable.column2
FROM updatetable
WHERE origtable.id == updatetable.id
Run Code Online (Sandbox Code Playgroud)
编辑:
似乎使用当前的SQLAlchemy api可能无法将此单个语句格式化.
但是,使用此处的解决方案似乎可以使用两个选择.
由于这是针对 Postgresql,我们可以使用 SQLAlchemy 的多表更新支持。该文档仅适用于 Core,但Query API构建在 Core 之上,我们可以应用该知识:
session.query(OrigTable).\
filter(OrigTable.id == UpdateTable.id).\
update({OrigTable.column1: UpdateTable.column1,
OrigTable.column2: UpdateTable.column2},
synchronize_session=False)
Run Code Online (Sandbox Code Playgroud)
这导致
UPDATE origtable
SET column1=updatetable.column1,
column2=updatetable.column2
FROM updatetable
WHERE origtable.id = updatetable.id
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
582 次 |
最近记录: |