0

我有以下内容:

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>

为什么它不允许我重新打开连接?我将如何重新打开它,或者我需要创建一个新实例?

4

2 回答 2

2

您正在测试 self.conn 是否为 'None' 但它不是 - 它仍然是一个 mysql 连接对象。它的属性或方法之一会告诉您它是否打开,因此您可以对其进行测试,或者在 close_conn 中将 self.conn 设置为 None 如果这更容易的话。

于 2012-04-16T23:13:48.480 回答
0

函数“close_conn”在colseed 连接后返回self_conn。所以病毒式的 self_conn 总是正确的,对吧?

于 2012-04-17T00:15:30.373 回答