gpt4 book ai didi

python - 数据库连接 : with closing() vs __del__

转载 作者:行者123 更新时间:2023-11-28 23:01:42 25 4
gpt4 key购买 nike

使用 SQLAlchemy 连接到 MySQL,我已经厌倦了这样写:

with closing(engine) as connection:
do_sql_stuff(connection)

这种模式在我的代码的许多地方都重复出现,并且随着 __del__ 的可用性,这似乎是没有必要的。为什么不直接实现一个类来包装连接的创建和关闭:

class MyConnectionManager(object):
def __init__(self, db_uri):
self.__db_engine = sqlalchemy.create_engine(db_uri)
self.__db_conn = self.__db_engine.connect()

def __del__(self):
self.__db_conn.close()

这仅仅是两种不同的样式/偏好,还是有更重要的原因表明使用 with closing() 比使用 __del__ 更好(或副反过来)?

最佳答案

无法保证 __del__ 实际被调用的时间(或者在循环引用的情况下是否被调用)。 with closing(...) as ...: 保证在您退出 with 子句时调用清理代码。

关于python - 数据库连接 : with closing() vs __del__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10767905/

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