mysql python reconnect
2020.04.24 23:05
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
댓글 2
-
WHRIA
2020.04.24 23:10
-
WHRIA
2020.04.24 23:13
#!/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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
1654 | 넘 바쁘고 장난 아니다. | 으..죽겠다. | 2000.12.25 | 2081 |
1653 | *^^* | 구름 | 2001.01.02 | 2255 |
1652 | RE:119번 이야기 | 구름 | 2001.01.02 | 2102 |
1651 | 나양 | 호 | 2001.01.09 | 2182 |
1650 | `4월이야기`와 `8월의 크리스마스`의 공통점은? | soma | 2001.01.09 | 2337 |
1649 | 우와~감탄의 연발~! | 1004 | 2001.01.17 | 2441 |
1648 | 지나가는길에... | 임연경 | 2001.01.24 | 2254 |
1647 | 넘 멋쪄요!!! | 송혜린 | 2001.01.26 | 2084 |
1646 | Re: 우와~감탄의 연발~! | 한승석 | 2001.01.27 | 2089 |
1645 | Re: 지나가는길에... | 한승석 | 2001.01.27 | 2084 |
1644 | Re: 넘 멋쪄요!!! | 한승석 | 2001.01.27 | 2078 |
1643 | Re: `4월이야기`와 `8월의 크리스마스`의 공통점은? | 한승석 | 2001.01.27 | 2086 |
1642 | order | 서권 | 2001.02.11 | 3281 |
1641 | 여기는 신촌 | 최평균 | 2001.02.11 | 2082 |
1640 | 이오더 말이지... | 윤재원 | 2001.02.13 | 2850 |
https://stackoverflow.com/questions/207981/how-to-enable-mysql-client-auto-re-connect-with-mysqldb