MySQL 重连机制

摘要:
charset='utf8'):self.host=hostself.user=userself.passwd=passwdself.db=dbself.port=portself.charset=charsetself.conn=Nonself._conn()def_conn(self):=num:ifself._conn()==真:

一.

coon.ping(reconnect=True)

二.

#!/usr/bin/env python
# -*-coding:UTF-8-*-
import sys, MySQLdb, traceback
import time


class mysql:
    def __init__(self,
                 host='',
                 user='',
                 passwd='',
                 db='',
                 port=3306,
                 charset='utf8'
                 ):
        self.host = host
        self.user = user
        self.passwd = passwd
        self.db = db
        self.port = port
        self.charset = charset
        self.conn = None
        self._conn()

    def _conn(self):
        try:
            self.conn = MySQLdb.Connection(self.host, self.user, self.passwd, self.db, self.port, self.charset)
            return True
        except:
            return False

    def _reConn(self, num=28800, stime=3):  # 重试连接总次数为1天,这里根据实际情况自己设置,如果服务器宕机1天都没发现就......
        _number = 0
        _status = True
        while _status and _number <= num:
            try:
                self.conn.ping()  # cping 校验连接是否异常
                _status = False
            except:
                if self._conn() == True:  # 重新连接,成功退出
                    _status = False
                    break
                _number += 1
                time.sleep(stime)  # 连接不成功,休眠3秒钟,继续循环,知道成功或重试次数结束

    def select(self, sql=''):
        try:
            self._reConn()
            self.cursor = self.conn.cursor(MySQLdb.cursors.DictCursor)
            self.cursor.execute(sql)
            result = self.cursor.fetchall()
            self.cursor.close()
            return result
        except MySQLdb.Error, e:
            # print "Error %d: %s" % (e.args[0], e.args[1])
            return False

    def select_limit(self, sql='', offset=0, length=20):
        sql = '%s limit %d , %d ;' % (sql, offset, length)
        return self.select(sql)

    def query(self, sql=''):
        try:
            self._reConn()
            self.cursor = self.conn.cursor(MySQLdb.cursors.DictCursor)
            self.cursor.execute("set names utf8")  # utf8 字符集
            result = self.cursor.execute(sql)
            self.conn.commit()
            self.cursor.close()
            return (True, result)
        except MySQLdb.Error, e:
            return False

    def close(self):
        self.conn.close()


if __name__ == '__main__':
    my = mysql('localhost', 'root', 'root', 'test', 3306)
    print my.select_limit('select * from a_table', 1, 1)
    # my.close()

免责声明:文章转载自《MySQL 重连机制》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇进阶篇-用户界面:6.android studio使用github开源库实现下拉刷新NOIP2017赛前考试注意事项总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql主从复制、redis基础、持久化和主从复制

一、mysql(mariadb)基础 1、基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroot -p -h 127.0.0.1 -u 用户 -p 密码验证 -h 连接的主机地址 3.远程链接mysql服务端 mysql...

TP5中Session和Cookie的基础用法

Session的基础用法 赋值 // 赋值(当前作用域) Session::set('name','thinkphp'); // 赋值think作用域 Session::set('name','thinkphp','think'); 判断是否存在 // 判断(当前作用域)是否赋值 Session::has('name'); // 判断think...

Linux下使用VSCode开发OpenCV程序

在Linux下使用VSCode开发OpenCV程序,并使用cmake编译 创建项目 打开vscode,选择File->Open Folder VSCode配置 这里需要配置launch.json, tasks.json, c_cpp_properties.json三个文件; launch.json配置 点击左侧Debug, 选择Add Configu...

flutter_blue 蓝牙插件实战及那些坑

项目场景: 地下车库无网路的情况下需要使用蓝牙对小区门禁进行开门 本人掘金文章 坑一: 安卓端引入flutter_blue运行项目报错 1. 原因: 安卓sdk版本需要28以上 2. 解决: android/build.gradle 下修改 compileSdkVersion  targetSdkVersion 为 28;  minSdkVersion 修...

Python操作数据库出现的问题

问题一 我在使用Python操作mysql时出现:pymysql.err.OperationalError: (2006, "MySQL server has gone away (ConnectionAbortedError(10053, '你的主机中的软件中止了一个已建立的连接。', None, 10053, None))")。 问题的出现:我是使用了...

从MapX到MapXtreme2004[12]SearchNearest!

  “/xy”应用程序中的服务器错误。 searchInfo.SearchResultProcessor must be null.说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentException: searchInfo.Sea...