我有一個自定義的類寫入python重新建立一個MySQL連接,如果當前連接已死亡。唯一的問題是,目前的人似乎總是死去,並且總是進入除了我的嘗試之外的其他部分。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)
它進入except子句和輸出exception generated during sql connection:
這似乎是我的數據庫連接在每次查詢調用後關閉自己。但我不知道爲什麼會發生這種情況。任何有關這個問題的幫助將不勝感激。
我同意我的第一次調用db.query()會產生異常,但我的問題是,每個後續調用db.query也正在產生錯誤。 – sadmicrowave 2011-12-28 21:57:08
我已經添加了一些代碼來演示我的意思。我沒有看到每次調用'db.query'時發生異常,只是在第一次調用時(如預期的那樣)。請修改代碼以顯示錯誤。 – unutbu 2011-12-28 22:23:45
對於無知感到遺憾,但是您能否解釋(或提供文檔參考)您正在使用的用於將用戶名,密碼和數據庫傳遞給connect命令的配置方法? – sadmicrowave 2011-12-31 15:27:20