python连接不上数据库_解决Python数据库连接超时问题

本文最后更新于2019年7月31日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

简单记录一下前段时间碰到的小问题的解决记录,方便以后参考。

正文:

参考解答:

对于一个不是很繁忙的(存在数据库连接的)后台服务来说,可能存在数据库连接自动断开的情况,因为数据库默认的 wait_timeout=28800 ,单位是秒,换算后是8小时,也就是你的服务启动8小时后,如果这期间没有任何SQL操作,就会被MySQL自动断开。如果没有自动检测重连机制,服务可能就不可用了。

如果你选用的ORM框架会做连接保活处理也还OK,就不需要考虑这个问题(但是你也要了解有这个问题,只不过是框架帮你处理了)。

如果你选择的是MySQLdb/pymysql这样的库,就需要自己处理这个问题:

· StackOverflow上的回答是建议不要使用全局游标,而是每次使用的时候动态创建连接,使用了之后再主动销毁;

· 另外一个办法就是使用全局游标,但是每次实际SQL操作之前,先用ping检查一下连接状态,不行的了话再新建一个。

如果你的后台服务比较繁忙,那最好还是用现成的数据库连接池工具来处理,性能和稳定性都会比上面这两种手工的方法更好。

&

import pymysql

class MySQL(object):

def __init__(self, host='127.0.0.1', port=3306

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值