Как выполнить хранимую процедуру или функцию MySQL в Flask-SQLAlchemy - PullRequest
0 голосов
/ 08 января 2019

Я сделал хранимую процедуру с MySQLWorkbench и протестировал ее на этой платформе. Хранимая процедура отлично работает на MySQLWorkbench, но если я запускаю хранимую процедуру с Flask-SQLAlchemy, я не получаю никакой ошибки, но не вижу результатов в таблице.

Я пробовал следующие способы выполнения хранимой процедуры:

db.engine.execute("CALL stored_procedure_name(%s, %s)", (parm_1, parm_2))

Это не приводит к ошибке, но функция не дает те же результаты (в базе данных), как если бы я запускаю ту же функцию (с теми же параметрами), что и в MySQLWorkbench.

Я тоже пробовал:

db.engine.execute(func.stored_procedure_name(parm_1, parm_2))

Он вернул, что имя_хранилища_процедуры не было функцией, поэтому я также создал функцию, которая была (почти) идентична хранимой процедуре, и запустил ее с использованием того же кода, но он по-прежнему не выполняет функцию должным образом и не выполняет ее. вернуть ошибку.

1 Ответ

0 голосов
/ 08 января 2019

Так что после некоторого прочтения документации я нашел ответ. Я все еще хочу сохранить вопрос, потому что думаю, что это полезно для некоторых людей.

Вы можете запустить функцию (поэтому не является хранимой процедурой ) с помощью следующего кода

db.engine.execute(text("SELECT function_name(:parm_1, :parm_2)").execution_options(autocommit=True), :parm_1 = :parm_1, :parm_2 = :parm_2)
...