PyMySQL callproc()未执行进程中的语句

sqserrrh  于 2023-02-28  发布在  Mysql
关注(0)|答案(2)|浏览(116)

我尝试使用python pymysql库调用MySQL proc,但由于某种原因,它不工作。我的过程需要2个参数,如果我传递的参数比预期的长度更长,那么它会给我"Data too long for column '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()
e4yzc0pl

e4yzc0pl1#

我想这不是调用过程的问题。你没有正确传递参数,因为序列是错误的,所以可能是插入查询无法插入它。尝试一下,并在最后一个参数的末尾放一个逗号,如下所示。

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

up9lanfz2#

我认为您应该添加以下代码:
con.commit()

相关问题