多列的SQLAlchemy相关更新

2024-06-25 23:21:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经能够使用docshere中显示的相关更新构造来更新表中的一列。在

例如:

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

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

它产生的SQL类似于:

^{pr2}$

是否可以使用declarictive或Query Api来更新所选内容的多个列?在

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

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

编辑:

在当前的SQLAlchemy api中,似乎无法将此语句格式化为单个语句。在

但是,使用两个select的解决方案似乎可以使用here中的解决方案。在


Tags: id内容column语句解决方案whereselectcolumn1
1条回答
网友
1楼 · 发布于 2024-06-25 23:21:58

因为这是针对Postgresql的,所以我们可以使用SQLAlchemy的multiple table update支持。该文档仅针对Core,但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)

结果是

^{pr2}$

相关问题 更多 >