在python中使用cursor.callproc()调用MySQL存储过程

时间:2017-11-08 07:51:50

标签: python mysql api stored-procedures cursor

当我尝试使用cursor.callproc()调用MySQL存储过程时 我遇到了一些问题。当有多个输入和输出参数时,没有问题,一切正常如下: 我使用5个输入/输出参数在MySQL中创建了程序:

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必须是一个序列'。我不知道如何修复它,因为我没有其他参数来形成序列。有人能告诉我这里发生了什么吗?谢谢!

1 个答案:

答案 0 :(得分:0)

你可能会认为

arg3 = ('INFO1101')

会创建一个包含单个元素的元组,但它不会。在该上下文中,括号充当“操作顺序”说明符,例如

foo = (2 + 1) * 4

要创建单元素元组,您需要添加逗号,如

arg3 = ('INFO1101',)