mysql - PyMySQL callproc()未在proc中执行语句
问题描述
我正在尝试使用 python pymysql lib 调用 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()
解决方案
我想这不是调用程序的问题。由于序列错误,您没有正确传递参数,因此插入查询可能无法插入该参数。试试这个,并在最后一个参数的末尾加上一个逗号,如下所示。
result_args = cur.callproc("test_abc", ('test123','2019-04-10',))
推荐阅读
- ios - Swift Firebase“对象.....不存在”但图片保存到存储但不保存到数据库
- jquery - 将鼠标悬停在图像上后,如何在 jQuery 中“撤消”动画?
- database - 在 liquibase.properties 中设置几个“ChangeLogFile”值
- ios - 关闭或滑出应用程序时未触发iOS Objective-C didReceiveRemoteNotification
- java - dcoder 中 hello world 教程的问题
- c - 如何找到没有重复的n个整数的未排序数组A的重复并证明它
- php - 为什么 PHP 对 where 子句的处理方式与 phpmyadmin 不同?
- amazon-web-services - 使用 CLI 创建弹性 beanstalk 环境时如何指定自定义亚马逊机器映像 (AMI) ID?
- python - pandas - 将具有多种日期格式的列转换为日期时间
- python - datetime.strptime 格式