使用 Connector/Python 调用带有反引号名称的 MySQL 存储过程
Calling MySQL stored procedures with backticked names using 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 应用程序中。
我希望有人能够阐明这个问题。
MySQL 邮件列表中的 Johan de Meersman 指出反引号是 MySQL 定界符,实际上不是名称的一部分,因此它们不应包含在调用中。
我本可以发誓我曾尝试过在没有反引号的情况下调用该过程,但事实证明这是错误的。
我在使用 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 应用程序中。
我希望有人能够阐明这个问题。
MySQL 邮件列表中的 Johan de Meersman 指出反引号是 MySQL 定界符,实际上不是名称的一部分,因此它们不应包含在调用中。
我本可以发誓我曾尝试过在没有反引号的情况下调用该过程,但事实证明这是错误的。