【发布时间】:2015-05-13 18:17:35
【问题描述】:
我想根据 SQLAlchemy 中另一张表的其他多列更新一个表的多列。我在测试时使用的是 SQLite,所以我不能使用 `UPDATE table1 SET col=val WHERE table1.key == table2.key" 语法。
换句话说,我正在尝试创建这种更新查询:
UPDATE table1
SET
col1 = (SELECT col1 FROM table2 WHERE table2.key == table1.key),
col2 = (SELECT col2 FROM table2 WHERE table2.key == table1.key)
在 SQLAlchemy 中:
select_query1 = select([table2.c.col1]).where(table1.c.key == table2.c.key)
select_query2 = select([table2.c.col2]).where(table1.c.key == table2.c.key)
session.execute(table.update().values(col1=select_query1, col2=select_query2))
我只想查询一次而不是两次,除非 SQLite 和 MySQL 足够聪明,不会自己进行两次查询。
【问题讨论】:
标签: python mysql sqlite sqlalchemy