如何在flask sqlalchemy中执行mysql存储过程或函数

vh0rcniy  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(629)

我用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))

它返回存储过程\名称不是函数,因此我还创建了一个与存储过程(几乎)相同的函数,并使用相同的代码运行它,但它仍然无法正确运行该函数,并且不会返回错误。

s3fp2yjn

s3fp2yjn1#

所以在阅读了一些文档之后,我找到了答案。我还是想保留这个问题,因为我认为它对某些人有用。
可以使用以下代码运行函数(因此不是存储过程

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

相关问题