Skip to content

mysql python reconnect

조회 수 5 추천 수 0 2020.04.24 23:05:50

 

 

import MySQLdb

class DB:
  conn = None

  def connect(self):
    self.conn = MySQLdb.connect()

  def query(self, sql):
    try:
      cursor = self.conn.cursor()
      cursor.execute(sql)
    except (AttributeError, MySQLdb.OperationalError):
      self.connect()
      cursor = self.conn.cursor()
      cursor.execute(sql)
    return cursor

db = DB()
sql = "SELECT * FROM foo"
cur = db.query(sql)
# wait a long time for the Mysql connection to timeout
cur = db.query(sql)
# still works

WHRIA

2020.04.24 23:13:10
*.0.0.1

#!/usr/bin/env python

import MySQLdb

class DisconnectSafeCursor(object):
    db = None
    cursor = None

    def __init__(self, db, cursor):
        self.db = db
        self.cursor = cursor

    def close(self):
        self.cursor.close()

    def execute(self, *args, **kwargs):
        try:
            return self.cursor.execute(*args, **kwargs)
        except MySQLdb.OperationalError:
            self.db.reconnect()
            self.cursor = self.db.cursor()
            return self.cursor.execute(*args, **kwargs)

    def fetchone(self):
        return self.cursor.fetchone()

    def fetchall(self):
        return self.cursor.fetchall()

class DisconnectSafeConnection(object):
    connect_args = None
    connect_kwargs = None
    conn = None

    def __init__(self, *args, **kwargs):
        self.connect_args = args
        self.connect_kwargs = kwargs
        self.reconnect()

    def reconnect(self):
        self.conn = MySQLdb.connect(*self.connect_args, **self.connect_kwargs)

    def cursor(self, *args, **kwargs):
        cur = self.conn.cursor(*args, **kwargs)
        return DisconnectSafeCursor(self, cur)

    def commit(self):
        self.conn.commit()

    def rollback(self):
        self.conn.rollback()

disconnectSafeConnect = DisconnectSafeConnection


List of Articles
번호 제목 글쓴이 날짜 조회 수
» mysql python reconnect [2] WHRIA 2020-04-24 5
1641 mysql 암호화 [2] WHRIA 2020-04-24 6
1640 php 세션 로그인 WHRIA 2020-04-24 3
1639 image encryption [1] WHRIA 2020-04-24 3
1638 zerohq encryption [5] WHRIA 2020-04-23 4
1637 의료영상분석장치 분류 코드 WHRIA 2020-04-22 5
1636 회귀분석 종류 WHRIA 2020-04-14 5
1635 fcitx WHRIA 2020-04-05 2
1634 chatbot WHRIA 2020-04-03 3
1633 kernel load WHRIA 2020-04-03 6
1632 plum WHRIA 2020-04-03 2
1631 zmq async client server [1] WHRIA 2020-03-12 10
1630 CIDR 표기법 [1] WHRIA 2020-03-12 3
1629 multiple NIC ubuntu [6] WHRIA 2020-03-10 5
1628 calendar javascript dropdown WHRIA 2020-03-01 5

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소