У меня есть сценарий python, который вызывает хранимый процесс на сервере MySQL, который, в свою очередь, вызывает несколько хранимых процедур, которые настраивают ведение журнала, а также создают и запускают запрос для экспорта данных для процесса ETL. Первые три сохраненных процесса, внутри оболочки, работают, первый создает запись в журнале и устанавливает переменную (@LogID), затем второй устанавливает временную таблицу, которая мне нужна, затем третий использует соединение с временной таблицей для созданияВ экспортном наборе есть четвертый процесс, который обновляет исходную запись журнала на основе @LogID, который я создал в первом сохраненном процессе, и переменной @exported_rows, которую я заполняю в третьем хранимом процессе. Проблема в том, что четвертый хранимый процесс не вызывается, и в результате таблица журнала не обновляется с указанием времени окончания и количества экспортируемых строк. Если я запускаю это через CLI, или через SequelPro или Workbench, он работает нормально. Когда я запускаю его через мой скрипт на python, это когда журнал не обновляется. Вот часть того, что происходит с кодом ...
sql = "call export_table('databaseName','tableName',Version )"
df = pd.read_sql(sql=sql, con=engine).to_csv(filePath + "/" + file, index=False, quoting=csv.QUOTE_NONE, escapechar="\\")
Затем сохраненный процесс выполняет эти четыре вызова:
call _export_log_begin('X',inDatabase,inTable,inVersion,inUpdatedAt);
call _create_temp_column_table(inDatabase,inTable,inVersion);
call _export_data(inDatabase,inTable,inVersion,InUpdatedAt);
call _export_log_end(@logId,@exportedRows);
Как я уже упоминал выше, это работает нормально при непосредственном вызове.
Я думаю, что панды должны закрывать / прерывать соединение после того, как набор результатов будет возвращен в третьем вызове.