- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这是我的查询:
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/
我使用带有 Flask 的 Postgresql 使用 SQLAlchemy 有以下数据库结构: class Attendance(db.Model): id = db.Column(db.Int
我正在通过创建新项目来尝试 Pyramid。我选择 PostgreSQL 和 sqlalchemy。现在我有一个手动创建的表格“照片”和一个模型: class Photo(Base): """
我正在尝试使用查询插入数据框 engine = create_engine('scot://pswd:xyz@ hostnumb:port/db_name') dataframe.to_sql('ta
我正在使用 pandas 创建一个 python 脚本来读取具有多个行值的文件。 读取后,我需要构建这些值的数组,然后将其分配给数据框行值。 我用过的代码是 import re import nump
这是我的查询: QUERY = """ UPDATE my_table SET my_prop=:foo WHERE hello
我正在尝试查询 Version,我希望将对象返回到它们的 max_version_number 属性等于 version_number 的位置: latest_versions = \ dbS
我有这个功能。我想要获取每个项目的照片ID数组,但得到一个错误
我在尝试测试是否可以将一些记录保存到数据库中时遇到了问题。我使用 postgres.app 作为数据库。在尝试测试之前,我做了: dropdb testdb createdb testdb pytho
我正在开发一个基于 http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982 的 flask 应用
在 heroku 上设置新数据库我试过 python manage migrate并得到许多与 relation already exists/does not exists 相关的异常.所以我按照这
I am getting this Exception in my browser, I have seen upto 20 posts related to this error but I cou
因此,我更改了用于我的 Django 应用程序的设备。为了更换设备,我只是将整个存储库复制粘贴到新设备,设置数据库,运行假迁移,然后当应用程序运行良好时,再次开始开发。 但是,当我开始在 Django
因此,我更改了用于我的 Django 应用程序的设备。为了更换设备,我只是将整个存储库复制粘贴到新设备,设置数据库,运行假迁移,然后当应用程序运行良好时,再次开始开发。 但是,当我开始在 Django
使用python的MySQLDB连接到MariaDB数据库;我正在运行 SELECT 的良性循环,由于某些未知原因而中断 _mysql_exceptions.ProgrammingError: (20
这是我的源代码: @app.route('/pythonlogin/register', methods=['GET', 'POST']) def register(): # Output m
模型.py class Stop(models.Model): idn = models.PositiveIntegerField(primary_key=True, unique=True)
我目前正在尝试将我的 Flask 应用程序部署到 Heroku,但我在数据库初始化期间遇到错误。 这是我的 models.py 文件: from app import app from app im
我正在使用 ipdb 调试器在本地调试多线程 Web 应用程序(Django、Plone)。通常 ipdb 似乎因为在调试提示符下发生的自动重新加载而感到困惑。生成的堆栈跟踪出现 /Users/mik
我正在尝试通过使用MRjob填充一个postgresql数据库。几天前,有人好心地建议我here将映射器分步进行。我试过但是给出了一个错误: python db_store_hadoop.py -r
我只是看不出此错误的原因。我在 phpMyAdmin 中尝试了相同的 SQL,它工作得很好,但在 Python 中尝试时失败了。 带有 SQL 查询的 Python 代码: cursor.execut
我是一名优秀的程序员,十分优秀!