PostgreSQL下Alembic执行UPDATE INNER JOIN报语法错误如何解决?
报错原因
PostgreSQL 不支持 MySQL 风格的 UPDATE ... INNER JOIN 语法,这是你遇到语法报错的核心原因。PostgreSQL 实现多表关联更新有自己的语法规范,需要通过 FROM 子句指定要关联的额外表,不能直接在 UPDATE 关键字后拼接 JOIN 逻辑。
修正后的实现方案
你可以将原来的SQL替换为符合PostgreSQL规范的写法,和你原有逻辑完全一致:
UPDATE "DevRun" SET prod_id = "DevAssociation".prod_id FROM "DevAssociation" WHERE "DevAssociation".dev_id = "DevRun".id
在 alembic 中执行时建议直接用多行字符串传入,避免手动拼接换行出错:
conn.execute(''' UPDATE "DevRun" SET prod_id = "DevAssociation".prod_id FROM "DevAssociation" WHERE "DevAssociation".dev_id = "DevRun".id ''')
内容的提问来源于stack exchange,提问作者A1122
相关产品推荐
相关产品推荐

