首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库连接:使用closing()与__del__

数据库连接:使用closing()与__del__
EN

Stack Overflow用户
提问于 2012-05-27 00:19:32
回答 1查看 1.2K关注 0票数 2

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

代码语言:javascript
复制
with closing(engine) as connection:
    do_sql_stuff(connection)

此模式在我的代码的许多区域中重复出现,而且随着__del__的出现,这似乎不再是必要的。为什么不实现一个类来包装连接的创建和关闭:

代码语言:javascript
复制
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__更好(反之亦然)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-27 00:26:53

不能保证何时实际调用__del__ (或者在循环引用的情况下是否调用它)。with closing(...) as ...:保证每当您退出with子句时都会调用清理代码。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10767905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档