我正在尝试使用Python访问存储过程,我输入一个客户ID,它将呈现一个多行表,其中包含客户在餐厅吃的多个实例以及他们吃了什么,什么时间他们吃了它,他们吃了几个月。它是一个多行表,因为客户ID不是主键。
在SQL中,输入以下命令:
call metrics.GetFoodByCustomerID("115960981")
将为我呈现正确的表格。但是,当我在Python中运行以下函数时,我收到的错误是我输入了不正确的过程参数。
[
知道我缺少什么吗?
答案 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'])