使用Connector / Python调用带有反引号名称的MySQL存储过程

时间:2016-05-06 18:58:05

标签: python mysql stored-procedures backticks mysql-connector-python

我无法使用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应用程序中。

我希望有人能够解决这个问题。

1 个答案:

答案 0 :(得分:1)

MySQL邮件列表上的Johan de Meersman指出,反引号是一个MySQL分隔符,实际上并不是名称的一部分,所以它们不应该包含在调用中。

我本来可以发誓我曾经尝试过没有反引号的程序,但事实证明这是错误。