我有一个使用 MySQL 数据库连接的 python 脚本,我希望当类的实例不再存在时关闭数据库连接,因此在我的类中我实现了一个断开连接方法,如下所示:
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 类并通过执行双 fork 创建一个 Unix 守护进程。
最佳答案
也许您可以使用 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
关于python 关闭mysql数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22936294/