PyMySQL callproc () не выполняет операторы в proc - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь вызвать MySQL proc, используя python pymysql lib, но по какой-то причине он не работает. Моя процедура принимает 2 аргумента, если я передаю аргументы с большей длиной, чем ожидалось, то выдает ошибку «Слишком длинные данные для столбца 'str'", что означает, что процедура вызывается. По какой-то причине вставка не происходит, таблица «abc» всегда пуста. Когда я вызываю процедуру из MySQL, она работает.

Процедура:

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

Python-скрипт для вызова proc:

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 Ответ

1 голос
/ 10 апреля 2019

Полагаю, проблема не в вызове процедуры.Вы неправильно передаете аргумент, поскольку последовательность неверна, поэтому, возможно, запрос вставки не может вставить это.Попробуйте это, а также поставьте запятую в конце последнего параметра, как показано ниже.

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