我有一个使用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守护进程。
答案 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