向字符串SQL查询添加参数时发生SQLAlchemy错误

2024-07-05 14:47:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用SQLALchemy 1.1.2编写一个字符串SQL查询。我遵循了文档中关于using textual SQL的说明,但在运行以下代码时遇到了语法错误:

from sqlalchemy.sql import text

# Create a database connection called "connection"...

q = text('USE :name')
connection.execute(q, name='DATABASE_NAME')

以下是错误消息:

^{pr2}$

由于我使用的是命名冒号格式,并将参数作为参数传递给connection.execute,所以我不知道为什么会出现这个问题。我使用的是MySQL服务器,但是如果我正确地阅读文档,text方法应该与DB无关。在

提前谢谢你的帮助。在


Tags: 字符串代码textnamefrom文档executesql
1条回答
网友
1楼 · 发布于 2024-07-05 14:47:34

根据documentation,您需要使用bindparams,如下所示:

q = text('USE :name')
q.bindparams(name="DATABASE_NAME")
connection.execute(q)

或者像这样:

^{pr2}$

这对我来说毫无问题。编辑:我错了,没用。

问题是bind params将用一个引号自动包装您的值。因此,您得到了最终的compiles语句(语法无效):

use 'DATABASE_NAME'

如果您要创建查询:"Select * from mytable where column_a=:name";这将起作用。因为它是用单引号括起来的。在

我建议您使用声明:

q = "USE {}".format("DATABASE_NAME") 

或者类似的东西。在

相关问题 更多 >