2012-04-16 74 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是否为'None',但它不是 - 它仍然是一个mysql连接对象。其中一个属性或方法会告诉你它是否打开,所以你可以测试它,或者在close_conn中将self.conn设置为None,如果这样更简单的话。

0

函数“close_conn”在串联连接后返回self_conn。所以可以让自己的self_conn永远是真的,对吗?