当我尝试使用cursor.callproc()调用MySQL存储过程时 我遇到了一些问题。当有多个输入和输出参数时,没有问题,一切正常,如下所示: 我在 MySQL 中创建了这样的过程,有 5 个输入/输出参数:
create procedure enrollclass(in yeartime int, in quartertime char(20), in stid char(20), in course_no char(20), out result int)
并使用如下方式调用Python中的过程:
arg2 = ('2016', 'Q2', info[0][0], course_no, 0)
ac = cursor.callproc('enrollclass',arg2)
这工作得很好。但是,如果我调用另一个只有一个输入参数(没有输出参数)的过程,如下所示:
create procedure prerequisite( in course_no char(20))
并使用此行调用该过程:
arg3 = ('INFO1101')
cursor.callproc('prerequisite', arg3)
然后系统不断给我错误消息“args必须是一个序列”。我不知道如何解决它,因为我没有其他参数来形成序列。有人能告诉我这里发生了什么事吗?谢谢!
最佳答案
你可能会这么想
arg3 = ('INFO1101')
会创建一个包含单个元素的元组,但事实并非如此。在这种情况下,括号充当“操作顺序”说明符,例如
foo = (2 + 1) * 4
要创建单元素元组,您需要添加逗号,如下所示
arg3 = ('INFO1101',)
关于python - python中使用cursor.callproc()调用MySQL存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47174293/