使用SQLAlchemy Core更新已连接的表

7

我有一个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核心API实现相同的语句?

我可以调用table1.join(table2, table1.c.name == table2.c.name)来创建连接,但是如何更新这个连接的表格呢?

1个回答

5
upd = table1.update()\
    .values(id=table2.c.id)\
    .where(table1.c.name == table2.c.name)

这样做是可以的,但如果你真的有所有这些外键,那么在进行此类更新时可能会出现错误。


我得到了“在字段列表中未知的列'table2.id'”,所以它似乎没有推断出连接。 - nighthawk454
请检查拼写错误等。 - van

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接