在Python中调用MySQL存储过程 - 不正确的参数错误

时间:2017-06-22 18:47:34

标签: python mysql stored-procedures

我正在尝试使用Python访问存储过程,我输入一个客户ID,它将呈现一个多行表,其中包含客户在餐厅吃的多个实例以及他们吃了什么,什么时间他们吃了它,他们吃了几个月。它是一个多行表,因为客户ID不是主键。

在SQL中,输入以下命令:

call metrics.GetFoodByCustomerID("115960981")

将为我呈现正确的表格。但是,当我在Python中运行以下函数时,我收到的错误是我输入了不正确的过程参数。

[enter image description here]

知道我缺少什么吗?

1 个答案:

答案 0 :(得分:1)

documentation for cursor.callproc表示第二个参数args应为

  

与程序一起使用的参数序列

在你的行

myCursor.callproc('metrics.GetFoodByCustomerID', ('115960981'))

您正在传递args括号括起来的字符串。 '115960981'周围的括号没有效果,特别是它们不会将此值转换为1元素序列。但是,在Python中,字符串是序列,因此参数列表被解释为9个单字符字符串的序列。出现错误是因为您的存储过程没有9个参数。

尝试用

替换上面的行
myCursor.callproc('metrics.GetFoodByCustomerID', ('115960981',))

这可能是你的目标。请注意尾随逗号,它使括号中的表达式成为1元组。或者,使用列表代替:您不需要尾随逗号来制作1个元素的列表:

myCursor.callproc('metrics.GetFoodByCustomerID', ['115960981'])