我无法使用MySQL Connector / Python来调用包含反引号的名称的存储过程。使用cursor.callproc()
方法执行此操作时出现以下语法错误:
mysql.connector.errors.ProgrammingError: 1064 (42000): 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 '`insert_page`_args1=NULL' at line 1
这是我的存储过程调用,导致错误:
args = (None, 'foo', 'bar')
cursor.callproc('`sp_insert_page`', args)
我已经看到了各种示例,演示了如何使用带有扩展字符串格式的游标来转义将评估错误的MySQL语法的字符串,但这似乎不适用于callproc()方法;无论格式化方法如何,我都会遇到上述语法错误。
调用名称包含MySQL命令行客户端反引号的存储过程可以正常工作,因此问题必须存在于python应用程序中。
我希望有人能够解决这个问题。
答案 0 :(得分:1)
MySQL邮件列表上的Johan de Meersman指出,反引号是一个MySQL分隔符,实际上并不是名称的一部分,所以它们不应该包含在调用中。
我本来可以发誓我曾经尝试过没有反引号的程序,但事实证明这是错误。