python 关闭mysql数据库连接

标签 python mysql database-connection

我有一个使用 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/

相关文章:

python - 如何在 matplotlib 中更改 x 轴和 y 轴?

spring - spring.jpa.hibernate.ddl-auto 属性在 Spring 中到底如何工作?

mysql - 使用 DSN ODBC 连接到 ONLINE MySQL 数据库

mysql - 如何使用 Auth0 的自定义数据库将用户添加到 MySQL 数据库?

mysql - 从 REGEXP 查询返回随机行集

c# - 未排序数组中的最长连续序列

python - Jupyter Lab 中针对包 pycwt 的 ModuleNotFoundError

python - 从方法对象获取方法调用及其参数

php - 在 MySQL 中每年插入 52 周(PHP 脚本)

php - MySql 半动态表名