python关闭mysql数据库连接

时间:2014-04-08 11:57:21

标签: python mysql database-connection

我有一个使用MySQL数据库连接的python脚本,我希望在类的实例不再存在时关闭数据库连接,因此在我的类中我实现了一个disconnect方法,如下所示:

def disconnect(self):
    '''Disconnect from the MySQL server'''
    if self.conn is not None:
        self.log.info('Closing connection')
        self.conn.close()
        self.conn = None
        self.curs = None

现在我正在考虑调用此方法如下:

def __del__(self):
    self.disconnect()

但是我已经读过你不能假设将会调用__del__方法,如果是这样,那么正确的方法是什么?我应该在何时/何时调用disconnect()方法?

重要的旁注是我的脚本作为unix守护程序运行,并按如下方式实例化:

if __name__ == '__main__':
    daemon = MyDaemon(PIDFILE)
    daemonizer.daemonizerCLI(daemon, 'mydaemon', sys.argv[0], sys.argv[1], PIDFILE)

以上采用MyDaemon类并通过执行双叉创建Unix守护进程。

1 个答案:

答案 0 :(得分:2)

也许您可以使用with语句并填充__exit__方法。例如:

class Foo(object):

  def disconnect(self):
    '''Disconnect from the MySQL server'''
    if self.conn is not None:
        self.log.info('Closing connection')
        self.conn.close()
        self.conn = None
        self.curs = None
        print "disconnect..."

  def __exit__(self, *err):
    self.disconnect()

if __name__ == '__main__':
  with Foo() as foo:
    print foo, foo.curs