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

在Python中调用MySQL存储过程-参数不正确,python,mysql,stored-procedures,Python,Mysql,Stored Procedures,我试图使用Python访问一个存储过程,在其中输入客户ID,它将呈现一个多行表,其中包含客户在餐厅吃的多个实例,以及他们吃了什么,什么时候吃,什么月吃。这是一个多行表,因为客户ID不是主键 在SQL中,输入以下命令: call metrics.GetFoodByCustomerID("115960981") 将为我呈现正确的表格。然而,当我在Python中运行以下函数时,我得到一个错误,即我为过程输入了不正确的参数 [ 知道我遗漏了什么吗?第二个参数args应该是 与程序一起使用的参数顺序 你

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

在SQL中,输入以下命令:

call metrics.GetFoodByCustomerID("115960981")
将为我呈现正确的表格。然而,当我在Python中运行以下函数时,我得到一个错误,即我为过程输入了不正确的参数

[

知道我遗漏了什么吗?

第二个参数
args
应该是

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

你行吗

myCursor.callproc('metrics.GetFoodByCustomerID', ('115960981'))
您正在为
args
传入一个由括号包围的字符串。
'115960981'
周围的括号无效,特别是它们不会将此值转换为1元素序列。但是,在Python中,字符串是序列,因此参数列表被解释为9个单字符字符串的序列ror的出现是因为存储过程不接受9个参数

尝试将上面的行替换为

myCursor.callproc('metrics.GetFoodByCustomerID', ('115960981',))
这可能就是您的目标。请注意后面的逗号,它使括号中的表达式成为一个1元组。或者,使用列表代替:创建一个1元素列表不需要后面的逗号:

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

以后,请不要发布代码图像。请将代码文本复制并粘贴到您的问题中。我想将您的问题中的一行代码复制到我的答案中,但我做不到:我必须手动键入。另请参阅@ShabinaRayan:我不知道您从何处想到可以在光标上调用
存储的\u结果我链接到的文档页面中没有提到贡品,因此坦率地说,我对您出现此错误并不感到惊讶。也许您想在我链接到的文档中使用
fetchall
fetchone
fetchmany
方法之一?