PyMySQL callproc()未在proc中执行语句

时间:2019-04-10 14:13:34

标签: mysql mysql-python pymysql

我正在尝试使用python pymysql lib调用MySQL proc,但由于某种原因,它无法正常工作。我的过程需要2个args,如果我传递的参数长度比预期的长,那么它给我“数据对于列'str'来说太长”错误,这意味着该过程正在被调用。由于某种原因未插入,表“ abc”始终为空。当我从MySQL工作台调用该过程时,它会起作用。

程序:

 DELIMITER $$
 create procedure test_abc(str varchar(20),eventDate varchar(10))
 BEGIN
      insert into abc values(str,eventDate);
 END$$
 DELIMITER ;

调用proc的Python脚本:

import pymysql

con = pymysql.connect(user='test', passwd='pass123',
                  host='mysql01.xyz.com',
                  database='testdb')
cur = con.cursor()
result_args = cur.callproc("test_abc", ('2019-04-10','test123'))

print result_args
cur.close()

1 个答案:

答案 0 :(得分:1)

我猜这不是调用过程的问题。您未正确传递参数,因为顺序错误,因此插入查询可能无法插入该参数。尝试这样做,并在最后一个参数的末尾添加一个逗号,如下所示。

    result_args = cur.callproc("test_abc", ('test123','2019-04-10',))