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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
1819 | mAP 계산법 | WHRIA | 2019.02.24 | 45576 |
1818 | epitope spreading | han | 2006.05.09 | 41030 |
1817 | encfs | WHRIA | 2020.05.17 | 36001 |
1816 | Heinrich Law (1:29:300 Law) | WHRIA | 2007.08.12 | 25000 |
1815 | 일본 주소 [2] | WHRIA | 2008.06.28 | 24030 |
1814 | 사주팔자 프로그램 | 한승석 | 2003.02.16 | 20335 |
1813 | simple adblock | WHRIA | 2012.04.13 | 18115 |
1812 | 도란사민 | WHRIA | 2011.04.19 | 18102 |
1811 | 탤런트 이윤지씨와 함께 | WHRIA | 2010.02.04 | 17046 |
1810 | penicillin | han | 2003.12.10 | 15717 |
1809 | SSH tunnel | WHRIA | 2007.10.01 | 15087 |
1808 | geexbox [1] | han | 2006.12.01 | 14611 |
1807 | 아이피부과 개원 | WHRIA | 2010.01.18 | 14441 |
1806 | 세무회계 | WHRIA | 2010.01.31 | 14404 |
1805 | 증명사진 | WHRIA | 2010.03.14 | 14336 |
https://stackoverflow.com/questions/207981/how-to-enable-mysql-client-auto-re-connect-with-mysqldb