如何在Flask-SQLAlchemy中执行MySQL存储过程或函数

时间:2019-01-08 14:08:47

标签: mysql flask flask-sqlalchemy

我使用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不是一个函数,所以我还创建了一个(几乎)与存储过程相同的函数,并使用相同的代码运行它,但是它仍然不能正确运行该函数,并且不能返回错误。

1 个答案:

答案 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)