1
VYSE 2015-02-26 23:59:00 +08:00 via Android
conn.ping(True)
cursor=.... |
2
lincanbin 2015-02-27 00:06:36 +08:00
from warnings import filterwarnings
filterwarnings('error', category = MySQLdb.Warning) 令Warning变为error,然后就可以开始捕获了 try except |
3
lianghui 2015-02-27 08:58:25 +08:00
你这配置太逗,服务器基本设置为10秒idle 给你一个客户端的重置参考下
https://github.com/thomashuang/dbpy/blob/master/db/mysql/connection.py |
5
jamiesun OP 看来还是没有仔细读sqla的文档,加个参数就ok了,再也不用暴力解决问题了
from sqlalchemy import create_engine e = create_engine("mysql://scott:tiger@localhost/test", pool_recycle=3600) |
6
lianghui 2015-02-28 09:30:01 +08:00 1
@jamiesun 对于idle的处理在pool和连接类处理问题idle问题不大,基本都是要每次使用check, 不过你已经用sqla,不过还是推荐你看看连接池的实现,你也可以去看看sqla的pool实现,不过他的pool为了适配多种数据库engine有很多特殊的处理,比如线程安全,然后什么queuepool,异步pool之类的
https://github.com/thomashuang/dbpy/blob/master/db/_db.py https://github.com/thomashuang/dbpy/blob/master/db/pool.py |