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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
184 | topsite | WHRIA | 2008.11.13 | 7022 |
183 | Clinical Study | WHRIA | 2007.08.13 | 7041 |
182 | 사랑에 빠지다 | WHRIA | 2007.07.06 | 7051 |
181 | 제 홈페이지를 두배로 즐기려면??? | 한승석 | 2000.06.09 | 7065 |
180 | Medicalphoto 홈페이지 개편 | WHRIA | 2012.04.10 | 7117 |
179 | Deep learning 기반 DEMO | WHRIA | 2018.09.16 | 7121 |
178 | 피부암 | WHRIA | 2008.08.13 | 7138 |
177 | MS 가 리눅스개발자를 구한다는데 | WHRIA | 2012.01.29 | 7139 |
176 | go~ go~ go~ | WHRIA | 2008.08.19 | 7165 |
175 | inception | WHRIA | 2017.01.23 | 7201 |
174 | 인생의 방향 | WHRIA | 2007.09.18 | 7220 |
173 | 신한 | WHRIA | 2008.10.27 | 7232 |
172 | 인생 헛살지는 않았다. | WHRIA | 2007.07.24 | 7235 |
171 | ssl | WHRIA | 2008.06.09 | 7238 |
170 | 버릴 것은 버리십시요. | WHRIA | 2007.08.09 | 7246 |
https://stackoverflow.com/questions/207981/how-to-enable-mysql-client-auto-re-connect-with-mysqldb