首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过SQLalchemy更新PosgreSQL数据库;语法错误

问通过SQLalchemy更新PosgreSQL数据库;语法错误
EN

Stack Overflow用户
提问于 2020-07-10 00:15:57
回答 4查看 97关注 0票数 0

我的PostgreSQL数据库中有两个表: table1和table2。它们都包含一个id列。我想从table2添加一列,比如col1,添加到table1 where table1.id = table2.id。

我正在尝试通过SQLalchemy对此进行加点。我一直收到以下错误:

代码语言:javascript
复制
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.SyntaxError) syntax error at or near "INNER"

以下是代码片段:

代码语言:javascript
复制
engine = create_engine(...)

with engine.connect() as con:
   con.execute("ALTER TABLE table1 ADD COLUMN col1 text")
   con.execute("UPDATE table1  \
                INNER JOIN table2 ON table1.id = table2.id \
                SET table1.col1 = table2.col1")

为什么我会得到这个错误?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-07-10 00:24:54

PostgreSQL不像MySQL和MS Access那样支持UPDATE...JOIN。然而,Postgres甚至支持UPDATE...FROM...JOIN,也支持UPDATE...FROM

代码语言:javascript
复制
con.execute("""UPDATE table1 t1
               SET col1 = t2.col1
               FROM table2 t2
               WHERE t1.id = t2.id""")
票数 1
EN

Stack Overflow用户

发布于 2020-07-10 00:20:26

在postgres中更新时,您不能直接使用joins,并且您的joins方式是不正确的。请使用以下查询,

代码语言:javascript
复制
update table1 set table1.col1 = qry.col1
from
(select col1 from table2) qry
where 
table1.id = table2.qry;
票数 0
EN

Stack Overflow用户

发布于 2020-07-10 00:21:45

这不是update的正确语法。请参阅https://www.postgresql.org/docs/current/sql-update.html

代码语言:javascript
复制
update table1
   set col1 = table2.col1
  from table2
 where table2.id = table1.id;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62819242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档