【问题标题】:Calling MySQL stored procedures with backticked names using Connector/Python使用连接器/Python 调用带有反引号名称的 MySQL 存储过程
【发布时间】:2016-09-01 22:52:02
【问题描述】:

我在使用 MySQL 连接器/Python 调用名称被反引号包围的存储过程时遇到问题。使用cursor.callproc() 方法时出现以下语法错误:

mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in
你的 SQL 语法;检查与您的 MySQL 服务器版本相对应的手册
在第 1 行的 '`insert_page`_args1=NULL' 附近使用正确的语法

这是我的存储过程调用,导致错误:

args = (None, 'foo', 'bar')
cursor.callproc('`sp_insert_page`', args)

我已经看到了各种示例,这些示例演示了如何使用具有扩展字符串格式的游标来转义会评估为不正确 MySQL 语法的字符串,但这似乎不适用于 callproc() 方法;无论格式化方法如何,都会出现上述语法错误。

从 MySQL 命令行客户端调用名称包含反引号的存储过程可以正常工作,因此问题一定出在 python 应用程序的某个地方。

我希望有人能够阐明这个问题。

【问题讨论】:

  • 你可以使用this类。我得到了它的回应。

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


【解决方案1】:

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

我本可以发誓我曾尝试在不使用反引号的情况下调用该过程,但事实证明这是错误。

【讨论】:

    猜你喜欢
    • 2012-02-29
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    相关资源
    最近更新 更多