gpt4 book ai didi

python - 关闭 django mysql 连接

转载 作者:行者123 更新时间:2023-11-29 03:43:05 25 4
gpt4 key购买 nike

我有一个连接到多个数据库(超过 400 个)的 Django 应用程序。数据库凭据经常更改。我不能使用 django 数据库支持,因为它需要静态设置。

所以我在加载返回游标的页面时创建动态数据库连接。

我有以下问题:

  • 这是释放游标的适当方式吗(使用析构函数 __del_ )
  • 如果我直接使用 close() 方法,我的析构函数是否安全
  • 我应该为连接对象做类似的事情,还是只关闭游标就足够了?
  • 是否有任何建议的标准解决方案?

    class MyDatabaseManager(object):
    def __init__(self, database_name):
    self.cursor = None
    #for safety in case next command return an exception
    self.cursor = some_object.get_cursor(database_name)

    def close(self):
    self.cursor.close()
    self.cursor = None

    def __del__(self):
    if not (self.cursor is None):
    self.close()

    def execute_query(self, sql_query, parameter_list):
    return self.cursor.execute(sql_query, parameter_list)

最佳答案

普遍的共识似乎是不使用 __del__。回顾 previous answers :

  1. 不能假定它曾经被调用或何时被调用。
  2. del 关键字不会导致调用 __del__。
  3. 这可能会导致垃圾收集无法正常工作(内存泄漏)。
  4. 改用显式方法(手动调用清理函数)或弱引用。

这应该可以回答您的问题 1、2 和 4。至于问题 3:如果您使用的数据库适配器符合 python dbapi2 (dbms 适配器的普遍形式)然后关闭游标并不意味着应该关闭连接。因此,即使所有创建的游标都已关闭,连接仍保持打开状态,我认为这是正确的。

关于python - 关闭 django mysql 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10655536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com