flask-sqlalchemy做系统orm层,报lost connetion以及sql has gone away的解决办法

来源:4-9 将模型映射到数据库中

邱晨100

2019-10-30

老师好,我是跟随着您的python基础课以及flask进阶课一路学来的。最近在用flask框架,做一套业务系统。
orm层就是采用的flask-sqlalchemy(数据库连接器是pymysql)
现在有两个问题想请教一下老师:
cnt = db.session.query(HiveExecRecord).filter_by(exec_uuid=str(exec_uuid)).count() 这是我的访问数据库的代码,我在老师的事例中并没有看到查询结束后在finally阶段写db.session.remove() 。请问,这个动作有必要做吗?
还有个问题是:
关于配置,是否这一个SQLALCHEMY_DATABASE_URI就够了?我在我的配置中加了以下三项:
SQLALCHEMY_POOL_SIZE = 5 SQLALCHEMY_POOL_TIMEOUT = 30 SQLALCHEMY_POOL_RECYCLE = -1
当时时不时发生2013 lost connetion以及2006 sql has gone away这样的错误,然后前台用户使用期间,突然输入某句话做检索,就异常以下,然后再刷新,又能连上数据库,正常返回结果了。请问这是怎么回事呢?与那个设置有没有关系呢?
后面我是改成了以下的配置:
SQLALCHEMY_POOL_SIZE = 20 SQLALCHEMY_POOL_TIMEOUT = 10 SQLALCHEMY_POOL_RECYCLE = 1200

请老师帮忙看看我的问题吧,谢谢了

写回答

1回答

7七月

2019-10-30

不需要remove的。你只告诉我,你和课程里的用法有什么不同,为什么?

0
5
邱晨100
非常感谢!
2019-12-02
共5条回复

Python Flask高级编程之从0到1开发《鱼书》精品项目

7月老师深入浅出剖析Flask核心机制,和你一起探讨Python高级编程

2735 学习 · 1267 问题

查看课程