@ pymysql.err.OperationalError: (2013, ‘Lost connection to MySQL server during query’)
python 使用sqlalchemy链接MySQL断链问题(2013, ‘Lost connection to MySQL server during query’)
解决方案
create_engine中添加参数:
pool_recycle=3600,
pool_pre_ping=True
SQLAlchemy 1.4 Documentation
官方文档中有介绍怎么处理断链问题。
原因
链接池的问题 mysql中链接保持时间为8小时(wait_timeout ),当超过这个时间,链接就会被收回,而在python-sqlalchemy中创建的链接是默认不收回,导致程序运行时链接数据库的时候有可能造成这个链接已经被MySQL收回了,就会丢失链接。
在程序中也设置一个回收机制pool_recycle,让链接超过3600秒也回收一次,同时pool_pre_ping=True,连接时ping一下数据库,连不上也回收一次,这就没有问题了。
测试(2013, ‘Lost connection to MySQL server during query’)问题已解决。