2012-04-16 4 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. Одно из его свойств или методов скажет вам, открыто или нет, так что вы можете проверить это вместо этого или установить self.conn в None в close_conn, если это проще.

0

Функция «close_conn» возвращает self_conn после его соединения с кольцом. Таким образом, желаемое self_conn всегда будет правдой, не так ли?

Смежные вопросы