1064:执行pymysql查询时发生sql语法错误

gcuhipw9  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(649)

这个问题在这里已经有答案了

在mysql查询中使用python变量(2个答案)
两年前关门了。
我使用pymysql从python执行sql查询命令。我的风格是 pyformat 通过以下方式发现:

>>> pymysql.paramstyle
pyformat

我的数据库和游标详细信息如下:

>>> MYDB = pymysql.connect(_params_)
>>> cursor = MYDB.cursor()

然后使用,

>>> cursor.execute("SELECT * FROM %(tablename)s",  {"tablename": "activity"})

我发现一个错误,

ProgrammingError: (1064, u"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the
 right syntax to use near '''activity''' at line 1")

另一方面,查询本身是有效的,

>>> unsafe_sql = ("Select * from activity")
>>> cursor.execute(unsafe_sql)
>>> 4

我不确定我的第一个问题是怎么回事。谢谢你的帮助。

fjnneemd

fjnneemd1#

不能将表名作为参数传递给 cursor.execute() . 每当一个参数是一个字符串,当它替换到查询中时,它就引用它。使用普通的字符串格式化方法,例如。

cursor.execute("SELECT * FROM %(tablename)s" % {"tablename": "activity"})

相关问题