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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
1759 | 승석아 광주 못와? | 채영광 | 2000.08.08 | 3890 |
1758 | 승석아....아래 저 아가씨는 누구냐? | 윤재원 | 2000.08.09 | 3712 |
1757 | 승석아 | 재호 | 2000.08.14 | 4030 |
1756 | 승석아-2 | 재호 | 2000.08.14 | 3738 |
1755 | 멋진 걸~ | 희진 | 2000.08.15 | 3432 |
1754 | Re: 멋진 걸~ | 한승석 | 2000.08.15 | 3578 |
1753 | 재미있는 핸드폰 문자 모음.(뜨는데 오래걸림) | 한승석 | 2000.08.15 | 4095 |
1752 | Re: 승석아....아래 저 아가씨는 누구냐? | 한승석 | 2000.08.15 | 3129 |
1751 | 한! 내 개장 홈을 링크해줘! | 채영광 | 2000.08.18 | 3959 |
1750 | 현재 홈페이지에 문제가 있습니다. | 한승석 | 2000.08.19 | 3617 |
1749 | 에구구~~ | ho~ho~~~ | 2000.08.20 | 3318 |
1748 | 하이~ 승석!! | 박중성 | 2000.08.20 | 3632 |
1747 | 한승석군 | 최평균 | 2000.08.21 | 4406 |
1746 | **^.^** 참 잘했어요 | 세레스 | 2000.08.21 | 3643 |
1745 | 엉 잘보구간다 | 김국현 | 2000.08.22 | 3425 |
https://stackoverflow.com/questions/207981/how-to-enable-mysql-client-auto-re-connect-with-mysqldb