python + pymysql连接数据库报“(2003, "Can't connect to MySQL server on 'XXX数据库地址' (timed out)")” |
您所在的位置:网站首页 › 数据库链接超时 › python + pymysql连接数据库报“(2003, "Can't connect to MySQL server on 'XXX数据库地址' (timed out)")” |
python + pymysql连接数据库报“(2003, "Can't connect to MySQL server on 'XXX数据库地址' (timed out)")”
前言:
由于项目最近更换了数据库,导致执行python代码连接数据库的时候,出现“超时”或“由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。”,代码执行失败了。目前使用的是polardb数据库(类似mysql) 错误信息如下: 1、 数据库连接失败:(2003, "Can't connect to MySQL server on 'XXX数据库的地址' (timed out)") 2、 (2003, "Can't connect to MySQL server on 'XXX数据库的地址' ([WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。)") 解决方案: 1、排查了本地端口冲突的问题,连接的远程的服务器 2、和对应的服务器端工作人员排查,机器网络正常(可能网络时好时坏) 3、最后通过加上数据库重连的机制解决
由于是首次遇到这种连接数据库超时的问题,以前连接数据库很少会有这种情况,所以原始代码是不需要重连的,98%概率是成功连接上的 def connect_dbserver(self): """ 连接数据库 """ try: self.db = pymysql.connect(**self.sql_config) self.cursor = self.db.cursor() except pymysql.Error as e: mylog.error("数据库连接失败:{0}".format(e))
加上重连机制的代码,失败了继续重试,一般都可以连接上数据库了 def connect_dbserver(self): """ 连接数据库 """ retry_count = 10 init_connect_count = 0 connect_res = True while connect_res and init_connect_count < retry_count: try: self.db = pymysql.connect(**self.sql_config) self.cursor = self.db.cursor() # 连接上退出循环,连接不上继续重连 connect_res = False except pymysql.Error as e: mylog.info("数据库连接失败,尝试重连...,错误信息:{0}".format(e)) init_connect_count += 1
参考:https://www.cnblogs.com/fanjp666888/p/8608406.html |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |