如何在except子句中关闭数据库连接

Ram*_*amy 0 python

最初,我没有main()函数.我刚才有一大堆代码:

if __name__ == '__main__':
Run Code Online (Sandbox Code Playgroud)

我正在尝试重构代码,以便它更清洁,并且在代码引发异常的情况下进行清理.所以,现在我的代码看起来像这样:

if __name__ == '__main__':
    try:
        main()
    except :
        print "Unexpected error:", sys.exc_info()[0]
        engine.close()
        db.close()
Run Code Online (Sandbox Code Playgroud)

问题是,引擎和数据库都是在main()中创建的,所以我实际上并没有对它们的引用.有没有办法以这种方式处理异常,或者我是否必须在main()函数中更细化?

编辑: 关于语句的非常有用的文章

Ign*_*ams 5

使用带有适当上下文管理器的with语句try...finally来确保您的连接已关闭.