gpt4 book ai didi

python - sqlalchemy.exc.ProgrammingError : (psycopg2. ProgrammingError) ":"处或附近的语法错误

转载 作者:太空狗 更新时间:2023-10-30 00:47:41 32 4
gpt4 key购买 nike

这是我的查询:

QUERY = """
UPDATE my_table
SET
my_prop=:foo
WHERE hello='world'
"""

我这样执行语句:

sqlalchemy_engine.execute(QUERY, foo='bar')

当我这样做时,出现以下错误:

sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) syntax error at or near ":"
UPDATE my_table\n SET\n my_prop.foo = :foo
^

在将值传递到 SQL Alchemy 执行之前,我从未遇到过问题。我做错了什么?

最佳答案

I've never run into problems before passing values into the SQLAlchemy execute. What am I doing wrong?

您可能一直在使用 Session.execute()之前,而不是 Engine.execute() .前者自动用 text() 包装 SQL 字符串构造,或者至少它的行为如此,这是这里的关键; text() 为 DB-API 驱动程序提供绑定(bind)参数/占位符的独立处理。没有它,您就会随心所欲地使用 DB-API,as noted by Craig Ringer in their answer .

因此,为了直接在引擎中使用:name 样式的占位符,只需使用text() 包装您的查询:

sqlalchemy_engine.execute(text(QUERY), foo='bar')

请注意引擎 is the starting point SQLAlchemy 应用程序的所有内容都构建在它之上,因此这可能是一个不进行自动包装而另一个进行自动包装的原因。 session 是更高级别的抽象。

关于python - sqlalchemy.exc.ProgrammingError : (psycopg2. ProgrammingError) ":"处或附近的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47190680/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com