【经验分享】Python3 Flask框架调用含有OUT参数的存储过程
写在前面
只想看成功结果的可以跳到“成功尝试”一节哦
本blog同时发布在本人的知乎和csdn,昵称都差不多~
应用背景&一些开幕的闲扯
作为一个即将毕业的双非水本,毕业设计自然是无法避开的事情。作为一个水本嘛,该摆就摆,自然也没打算写些太有创造性的东西(笑),于是就打算参考一下实习单位的系统,做一个前后端分离的护理系统出来。考虑到我更喜欢Python3(毕竟之前一直是在做深度学习),就把常用的JAVA Spring框架换成了我更熟悉的Python3+Flask框架实现一次这样的系统。没想到一失足成千古恨,让一个简简单单的毕设变成了要躺过无数大坑的冒险(悲)。今天要分享的存储过程调用就是这些坑里面比较深的一个。
技术背景
KeyWord:Python3,Flask框架,MySQL,存储过程
本文介绍了一种使用Flask进行存储过程调用的方法。Flask框架是Python3语言常用的一种后端服务框架,其具有轻量化等的优点。但是,相比较于比较成熟的JAVA Sring框架等其尚有功能不够强大的地方。对于存储过程的使用便是其中之一。本文适合使用Flask框架或Sqlalchemy依赖的同好用于参考。
失败尝试1. 使用db.execute()调用存储过程
众所周知,Flask支持执行rowSQL。使用rowSQL虽然比起建立一个DTO然后绑定数据库的方式更麻烦,但却也更灵活。我本人更喜欢这样的方式,一般而言,这个方式的使用是(下文中的db请参考Flask官方文档或其他博文):
# Flask执行rowSql的示例,使用了参数化的写法,需要使用sqlalchemy依赖库
sqlStr = "select * from {} where yourParama=:yourParama".format(self.yourTableName