使用 SQLAlchemy Core 更新连接表

nig*_*454 5 python mysql join sqlalchemy inner-join

我有一个 MySQL 数据库,表设置如下:

Table1      Table2
------      ------
  id          id, fk to Table1.id
  name        name
Run Code Online (Sandbox Code Playgroud)

我想更新Table1并设置Table1.id = Table2.idif Table1.name = Table2.name。或者,在 SQL 中:

UPDATE table1 t1 
INNER JOIN table2 t2 
ON t1.name = t2.name
SET t1.id = t2.id;
Run Code Online (Sandbox Code Playgroud)

如何使用 SQLAlchemy Core API 完成等效语句?

我可以调用table1.join(table2, table1.c.name == table2.c.name)创建连接,但如何更新此连接表?

van*_*van 5

upd = table1.update()\
    .values(id=table2.c.id)\
    .where(table1.c.name == table2.c.name)
Run Code Online (Sandbox Code Playgroud)

应该这样做,但如果您确实拥有所有这些外键,则执行此类更新时可能会出错。