【问题标题】:Update a Joined Table with SQLAlchemy Core使用 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) 来创建联接,但是如何更新这个联接表?

【问题讨论】:

    标签: python mysql join sqlalchemy inner-join


    【解决方案1】:
    upd = table1.update()\
        .values(id=table2.c.id)\
        .where(table1.c.name == table2.c.name)
    

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

    【讨论】:

    • 我收到了"Unknown column 'table2.id' in 'field list'",所以它似乎不是在推断加入。
    • 请检查错别字等
    猜你喜欢
    • 2016-06-24
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 2016-12-11
    • 2012-06-11
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多