Я выполняю хранимую процедуру, чтобы вставить новую строку в таблицу и вернуть автоматически сгенерированный идентификатор. Тем не менее, он не вставляет строку, но правильно отвечает с идентификатором при вызове из Python. (Например, он возвращает 9, но при поиске в БД, где нет нового сообщения)
Запуск команды с использованием SQL Workbench работает как положено
Вызываемый SP - addNewMessage и ожидает 3 параметры (sUID, roomid, сообщение)
SQL команда (при запуске вручную)
CALL addNewMessage('bfc1cc8c-4462-11ea-887c-000d3a7f4c7f', '658946602274258955', 'My Message')
SQL SP
BEGIN
INSERT INTO `messages`(`server_uid`, `title`, `message`, `author`, `room_id`) VALUES (sUID,title,'','',room);
SELECT @@IDENTITY as newId;
END
Python Скрипты
new_message = mysql_command('discord_addNewMessage', ['bfc1cc8c-4462-11ea-887c-000d3a7f4c7f', '658946602274258955', 'My Message'])
print(new_message);
def mysql_command(command, args, addDataWrapper=False, decode=False):
global sql_cursor
try:
if isinstance(args, list):
sql_cursor.callproc(command, [arg for arg in args])
else:
sql_cursor.callproc(command, [args])
for result in sql_cursor.stored_results():
return_data = result.fetchall()
if decode:
data = return_data[0][0].decode('utf-8')
else:
data = return_data[0][0]
if addDataWrapper:
data = '{"data":[' + data + ']}'
return data
except BaseException as ex:
print("SQL Error :", ex)