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

标签 python mysql stored-procedures database-cursor

当我尝试使用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/

相关文章:

python - 获取触发事件的小部件?

MySQL : Load data infile

postgresql - 学习 PostgreSQL 存储过程的最佳方法?

mysql - 查询和存储过程返回不同的结果

python - 添加到字典列表 - python

python - 将多维数组中的元素映射到其索引

python - shell脚本: compile and execute a python via shell script

mysql - 我应该如何为 MySQL 表中的列建立索引?

MySQL 多个字段引用一张表

mysql - 黑洞相当于什么?