У меня есть собственный класс, написанный на python для восстановления соединения mysql, если текущее соединение не работает. Единственная проблема заключается в том, что текущий всегда кажется мертвым и всегда входит в блок "исключение" моей попытки исключения.
class DB:
conn = None
def connect( self ):
try:
self.conn = MySQLdb.connect("localhost", "xxxx", "xxxxxx", "Systems")
except ( AttributeError, Mysqldb.OperationalError ), e:
raise e
def query( self, sql, params ):
try:
cursor = self.conn.cursor()
cursor.execute( sql, ( params ) )
except ( AttributeError, MySQLdb.OperationalError ), e:
print 'exception generated during sql connection: ', e
self.connect()
cursor = self.conn.cursor()
cursor.execute( sql, ( params ) )
cursor.close()
return cursor
def close( self ):
try:
if self.conn:
self.conn.close()
print '...Closed Database Connection: ' + self.conn
else:
print '...No Database Connection to Close.'
except ( AttributeError, MySQLdb.OperationalError ), e:
raise e
db = DB()
db.query( sql, myParams )
Проблема двоякая. 1) Когда я звоню db.close()
, я получаю ...No Database Connection
вывод. 2) Каждый раз, когда я выполняю db.query( sql, myParams )
, он входит в условие кроме и выводит exception generated during sql connection:
Кажется, что мое соединение с БД закрывается само после каждого запроса. Но я не знаю, почему это произошло. Любая помощь по этому вопросу будет принята с благодарностью.