2012-04-16 19 views
0

に私は次のようしている:Pythonは再接続のMySQLdb

class DBConnection: 
    def __init__(self, DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME): 
     self.host = DB_HOST 
     self.port = DB_PORT 
     self.name = DB_NAME 
     self.user = DB_USER 
     self.password = DB_PASSWORD 
     self.conn = None 
     self.cursor = None 

    def get_conn(self): 
     if self.conn is None: 
      self.conn = MySQLdb.connect (host = self.host, port = self.port, db = self.name, user = self.user, passwd = self.password) 
     return self.conn 

    def close_conn(self): 
     if self.conn: 
      self.conn.close() 
     return self.conn 

これは私が試してみて、再接続したときに、それは次のようになります。

>>> from db_conn import DBConnection 
>>> db = DBConnection(DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME) 
>>> db.get_conn() 
<_mysql.connection open to '127.0.0.1' at 7fbb1b8a2420> 
>>> db.close_conn() 
>>> db.conn 
<_mysql.connection closed at 7fbb1b8a2420> 
>>> db.get_conn() 
<_mysql.connection closed at 7fbb1b8a2420> 

は、なぜそれが私は再することはできません接続を開きますか?どのように再オープンするか、新しいインスタンスを作成する必要がありますか?

答えて

2

self.connが「なし」であるかどうかをテストしていますが、そうではありません。これは引き続きmysql接続オブジェクトです。そのプロパティまたはメソッドの1つが開いているかどうかを知らせるので、代わりにテストするか、close_connでself.connをNoneに設定する方が簡単です。

0

関数 "close_conn"は、接続後にself_connを返します。したがって、有望なself_connは常に真実でしょうか?