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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
1656 | 승석아 광주 못와? | 채영광 | 2000.08.08 | 3852 |
1655 | 승석아....아래 저 아가씨는 누구냐? | 윤재원 | 2000.08.09 | 3687 |
1654 | 승석아 | 재호 | 2000.08.14 | 4007 |
1653 | 승석아-2 | 재호 | 2000.08.14 | 3704 |
1652 | 멋진 걸~ | 희진 | 2000.08.15 | 3420 |
1651 | Re: 멋진 걸~ | 한승석 | 2000.08.15 | 3571 |
1650 | 재미있는 핸드폰 문자 모음.(뜨는데 오래걸림) | 한승석 | 2000.08.15 | 4076 |
1649 | Re: 승석아....아래 저 아가씨는 누구냐? | 한승석 | 2000.08.15 | 3124 |
1648 | 한! 내 개장 홈을 링크해줘! | 채영광 | 2000.08.18 | 3939 |
1647 | 현재 홈페이지에 문제가 있습니다. | 한승석 | 2000.08.19 | 3605 |
1646 | 에구구~~ | ho~ho~~~ | 2000.08.20 | 3296 |
1645 | 하이~ 승석!! | 박중성 | 2000.08.20 | 3622 |
1644 | 한승석군 | 최평균 | 2000.08.21 | 4391 |
1643 | **^.^** 참 잘했어요 | 세레스 | 2000.08.21 | 3633 |
1642 | 엉 잘보구간다 | 김국현 | 2000.08.22 | 3410 |
https://stackoverflow.com/questions/207981/how-to-enable-mysql-client-auto-re-connect-with-mysqldb