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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
289 | 완벽하다고 봐...내 사진만 없는 거 빼면 | guesswho? | 2000.06.12 | 4319 |
288 | 승석이오빠아...ㅜ.ㅜ 설가면 맛난거 사주우.ㅠ.ㅠ | 김승욱 | 2000.08.06 | 4362 |
287 | 홈페이지 개편 | WHRIA | 2007.06.22 | 4378 |
286 | Castle | WHRIA | 2007.07.21 | 4405 |
285 | 한승석군 | 최평균 | 2000.08.21 | 4412 |
284 | 부지런함 | WHRIA | 2007.06.18 | 4424 |
283 | slide note 삭제 슬라이드 노트 삭제 | WHRIA | 2018.09.12 | 4433 |
282 | 슬라이스 방지법 | WHRIA | 2013.06.20 | 4459 |
281 | Yahoo !! | WHRIA | 2007.08.04 | 4465 |
280 | 영어로 숫자 표현 | WHRIA | 2020.05.28 | 4465 |
279 | 드라이버 잘치는 법 | WHRIA | 2013.06.20 | 4468 |
278 | 음악 니가 다 정리한 거야? | 채영광 | 2000.07.18 | 4510 |
277 | 제 홈페이지에 대한 소개 | 한승석 | 2000.06.09 | 4551 |
276 | 영세 축하합니다 | 안소정 | 2000.08.23 | 4578 |
275 | Celebrate you to the world of God! | 채영광 | 2000.08.27 | 4669 |
https://stackoverflow.com/questions/207981/how-to-enable-mysql-client-auto-re-connect-with-mysqldb