每当我尝试运行一个普通的查询时,所有的工作都非常好。代码执行,我可以得到结果,但每当我尝试在python中使用准备好的语句时,总是会出现以下错误:
1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '? WHERE name = ?' at line 1
我要运行的代码:
cursor = con.db.cursor(prepared=True)
try:
cursor.execute("SELECT * FROM %s WHERE name = %s", ('operations', 'check', ))
except mysql.connector.Error as error:
print(error)
except TypeError as e:
print(e)
我还尝试将tuple对象更改为string,并删除了其中一个'%s'以进行检查。但是我仍然得到一个'%s'synax的错误。
我尝试过的另一件事是使用dict对象,因此我将“%s”更改为“%(table)s”和“%(name)s”,并使用dict
{'table': 'operations', 'name': 'check'}
例子:
cursor.execute("SELECT * FROM %(table)s WHERE name = %(name)s", {'table': 'operations', 'name': 'check'})
但还是没用,我还是有例外
我错过什么了吗?
提前谢谢!
--------编辑--------
多亏了@khelwood,我解决了这个问题。正如@khelwood在注解中提到的,问题是因为我试图使用'%s'作为表名的参数。python编写的语句不能处理诸如表名之类的参数,因此引发了异常
1条答案
按热度按时间7tofc5zh1#
不能将表名作为查询参数插入。可以将要查找的名称作为参数传递,但它应该位于元组中:
("check",)
所以