[英]sqlalchemy : executing raw sql with parameter bindings
我正在尝试使用带有SQLALchemy(在alembic脚本中)的参数运行此简单的原始sql语句:
from alembic import op
t = {"code": "123", "description": "one two three"}
op.execute("insert into field_tags (id, field_id, code, description) "+
"values (1,'zasz', :code ,:description')", t)
我得到以下错误:
sqlalchemy.exc.StatementError: A value is required for bind parameter
'description' (original cause: InvalidRequestError: A value is required for
bind parameter 'description') "insert into field_tags (id, field_id, code,
description) values (1, 'math',
%(code)s ,%(description)s)" []
解决方案:
t = {"code": "123", "description": "one two three"}
from sqlalchemy.sql import text
op.get_bind().execute(text("insert into field_tags (id, field_id, code, description) "+
"values (1,'zasz', :code ,:description')"), **t)
您需要获取connection
对象,对其调用execute()
并将查询参数作为关键字参数传递:
from alembic import op
from sqlalchemy.sql import text
conn = op.get_bind()
conn.execute(
text(
"""
insert into field_tags
(id, field_id, code, description)
values
(1, 'zasz', :code , :description)
"""
),
**t
)
另请参阅: 如何在SQLAlchemy-flask应用程序中执行原始SQL 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.