Ошибка 1064 при попытке использования mysql-транзакции в Pycharm
Я пишу свой проект на Flask. Я хочу создать транзакцию, которая будет мне добавлять переданные значения в строку таблицы, а затем, вызывать хранимую процедуру. У меня есть следующий обработчик:
class UserDatabase:
def __init__(self, config: dict):
self.config = config
def __enter__(self):
try:
self.conn = connect(**self.config)
self.cursor = self.conn.cursor()
return self.cursor
except OperationalError as err:
if err.args[0] == 1045:
print('Неверный логин и пароль, повторите подключение')
return None
if err.args[0] == 2003:
print('Неверно введен порт или хост для подключения к серверу')
return None
if err.args[0] == 1049:
print('Такой базы данных не существует')
return None
except UnicodeEncodeError as err:
print('Были введены символы на русском языке')
return None
except InterfaceError as err:
print(err)
return err
def __exit__(self, exc_type, exc_value, exc_trace):
if exc_value:
if exc_value == 'Курсор не был создан':
print('Курсор не создан')
elif exc_value.args[0] == 1064:
print('Синтаксическая ошибка в запросе!')
elif exc_value.args[0] == 1146:
print('Ошибка в запросе! Такой таблицы не существует.')
elif exc_value.args[0] == 1054:
print('Ошибка в запросе! Такого поля не существует.')
return False
else:
self.conn.commit()
self.cursor.close()
self.conn.close()
return True
и непосредственно коннект к базе:
def work_with_db_insert(dbconfig : dict, _SQL : str) -> list:
with UserDatabase(dbconfig) as cursor:
cursor.execute(_SQL)
Вот сам скрипт транзакции:
START TRANSACTION;
BEGIN;
INSERT INTO bilboard.string_order ( `start_ar`, `end_ar`, `bil_id`, `ord_id`)
VALUES ('$date_start', '$date_end', '$bil_id', '$ord_id');
call new_procedure('$ord_id');
COMMIT;
Этот скрипт отлично работает в MySqlWorkbench, однако в самом интерфейсе Pycharm и моего проекта, падает с кодом ошибки:
Синтаксическая ошибка в запросе! pymysql.err.ProgrammingError: (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 'BEGIN;\n INSERT INTO bilboard.string_order (
start_ar,end_ar,bil_id, `o' at line 2")
Что я не так делаю?