Странная ошибка python 3 и pymysql - PullRequest
0 голосов
/ 07 июня 2018

Использование pymysql с python 3.6.4 и mysql 8 в Windows 10. Я получаю странные синтаксические ошибки.Команды, однако, использовались для работы с Mysql 5.7, и они работают самостоятельно.Вот два примера:

create table Guest(
                    guestNo INT,
                     firstName varchar(15),
                     lastName varchar(15),
                     phoneNo VARchar(20));

Ошибка, напечатанная python print(ex.args), где ex - это Exception:

(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'create table Guest(\n\t\t    guestNo INT,\n                     firstName varchar(15' at line 2")

Другой пример:

insert into Booking
values (101, '2014-06-01', '2014-06-30', 500);
insert into Booking
values (101, '2014-08-01', '2014-08-31', 500);
insert into Booking
values (102, '2014-07-01', '2014-07-31', 500);
insert into Booking
values (102, '2015-07-01', '2015-07-31', 500);
insert into Booking
values (103, '2014-09-01', '2014-09-30', 500);

Ошибка, напечатанная python print(ex.args), где ex - это Exception:

(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'insert into Booking\nvalues (101, '2014-06-01', '2014-06-30', 500);\ninsert into B' at line 2")

Кажется, я могу подключиться нормально (не используя новую аутентификацию).

1 Ответ

0 голосов
/ 08 июня 2018

Итак, пара вещей, которые отличаются от MySQL 5.7 с помощью pymysql: 1. cursor.exec(q).д должна быть одна команда.Несколько команд, разделенных;не работай.2. После тщательного изучения кода python, он добавлял дополнительные SET @some_var = 0; перед каждым запросом, таким образом преобразовывая мои запросы в запрос с несколькими операторами.Надеюсь, это кому-нибудь поможет.

...