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

2024-10-01 09:22:26 发布

您现在位置:Python中文网/ 问答频道 /正文

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

在SQL中,输入以下命令:

call metrics.GetFoodByCustomerID("115960981")

将为我呈现正确的表。但是,当我在Python中运行以下函数时,我得到一个错误:我为procedure输入了错误的参数。在

[enter image description here]

你知道我错过了什么吗?在


Tags: 实例函数命令idsql客户过程错误
1条回答
网友
1楼 · 发布于 2024-10-01 09:22:26

documentation for ^{}声明第二个参数args应该是

Sequence of parameters to use with procedure

在你的队伍里

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

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

尝试将上面的行替换为

^{pr2}$

这可能就是你的目标。注意后面的逗号,它使括号中的表达式成为1元组。或者,使用一个列表来代替:您不需要在后面加逗号就可以生成一个单元素列表:

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

相关问题 更多 >