我使用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))
它返回了stored_procedure_name不是一个函数,所以我还创建了一个(几乎)与存储过程相同的函数,并使用相同的代码运行它,但是它仍然不能正确运行该函数,并且不能返回错误。
答案 0 :(得分:0)
因此,在阅读了文档之后,我找到了答案。我仍然想保留这个问题,因为我认为这对某些人有用。
您可以使用以下代码运行一个函数(因此不是存储过程)
db.engine.execute(text("SELECT function_name(:parm_1, :parm_2)").execution_options(autocommit=True), :parm_1 = :parm_1, :parm_2 = :parm_2)