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 | 기장, 간편장부 | WHRIA | 2008.08.30 | 9045 |
1758 | gold | WHRIA | 2009.09.15 | 9024 |
1757 | 안녕하세염...저는.. | 그리니 | 2000.06.01 | 8997 |
1756 | 과열된 증시 | WHRIA | 2009.09.19 | 8917 |
1755 | 좋은 화장품 | WHRIA | 2012.07.11 | 8915 |
1754 | ASUS 1215N | WHRIA | 2011.01.19 | 8910 |
1753 | vs 2005 | WHRIA | 2008.02.22 | 8903 |
1752 | XP home 에서 동시 접속 늘리기 | WHRIA | 2012.08.25 | 8891 |
1751 | 곰녹음기 | WHRIA | 2013.01.22 | 8866 |
1750 | Nuvie Project | WHRIA | 2013.01.18 | 8841 |
1749 | 어 이상하다 | 한석근 | 2000.06.08 | 8838 |
1748 | Star excision [1] | WHRIA | 2007.08.14 | 8795 |
1747 | 남들이 괴로워할 때가 살 지점, 남들이 흥분할 때가 팔 시점 | WHRIA | 2009.09.14 | 8784 |
1746 | MSI U270 | WHRIA | 2011.04.27 | 8783 |
1745 | Visual Studio 에서 SVN 업로드를 위해 불필요한 파일 삭제 | WHRIA | 2013.01.13 | 8751 |
https://stackoverflow.com/questions/207981/how-to-enable-mysql-client-auto-re-connect-with-mysqldb