【问题标题】:PyMySQL callproc() not executing statements in procPyMySQL callproc()未在proc中执行语句
【发布时间】:2019-09-01 01:01:44
【问题描述】:

我正在尝试使用 python pymysql lib 调用 MySQL proc,但由于某种原因它无法正常工作。我的过程需要 2 个 args,如果我传递的参数长度大于预期,那么它会给我“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()

【问题讨论】:

    标签: mysql mysql-python pymysql


    【解决方案1】:

    我想这不是调用过程的问题。由于序列错误,您没有正确传递参数,因此插入查询可能无法插入该参数。试试这个,并在最后一个参数的末尾加上一个逗号,如下所示。

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

    【讨论】:

    • 尝试将您的代码放入 try 块并打印异常(如果有)。这是这样做的最佳实践,您也可以轻松调试它。您可能遇到了配置问题。
    • 您的 '2019-04-10' 的大小为 12,而您定义了它的最大大小为 10。这就是出现该错误的原因
    猜你喜欢
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 2012-01-03
    • 2016-03-03
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多