使用 SQLAlchemy Core 更新连接表
Posted
技术标签:
【中文标题】使用 SQLAlchemy Core 更新连接表【英文标题】:Update a Joined Table with SQLAlchemy Core 【发布时间】:2015-04-01 04:28:06 【问题描述】:我有一个 mysql 数据库,其表设置如下:
Table1 Table2
------ ------
id id, fk to Table1.id
name name
如果Table1.name = Table2.name
,我想更新Table1
并设置Table1.id = Table2.id
。或者,在 SQL 中:
UPDATE table1 t1
INNER JOIN table2 t2
ON t1.name = t2.name
SET t1.id = t2.id;
如何使用 SQLAlchemy Core API 完成等效语句?
我可以调用table1.join(table2, table1.c.name == table2.c.name)
来创建联接,但是如何更新这个联接表?
【问题讨论】:
【参考方案1】:upd = table1.update()\
.values(id=table2.c.id)\
.where(table1.c.name == table2.c.name)
应该这样做,但是如果您确实拥有所有这些外键,则执行此类更新时可能会出错。
【讨论】:
我收到了"Unknown column 'table2.id' in 'field list'"
,所以它似乎不是在推断加入。
请检查错别字等以上是关于使用 SQLAlchemy Core 更新连接表的主要内容,如果未能解决你的问题,请参考以下文章
SQLAlchemy 将外连接 ORM 查询转换为 Core