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 接続オブジェクトです。そのプロパティまたはメソッドの 1 つが開いているかどうかを教えてくれるので、代わりにそれをテストするか、それが簡単な場合は close_conn で self.conn を None に設定できます。

于 2012-04-16T23:13:48.480 に答える
0

関数「close_conn」は、接続のシード後に self_conn を返します。つまり、実行可能な self_conn は常に true ですよね?

于 2012-04-17T00:15:30.373 に答える