gpt4 book ai didi

python - 为什么关闭数据库连接需要 teardown_appcontext?

转载 作者:搜寻专家 更新时间:2023-10-30 20:35:45 25 4
gpt4 key购买 nike

根据 flask docs ,我们应该在应用程序上下文断开时关闭数据库连接:

def get_db():
"""Opens a new database connection if there is none yet for the
current application context.
"""
if not hasattr(g, 'sqlite_db'):
g.sqlite_db = connect_db()
return g.sqlite_db

@app.teardown_appcontext
def close_db(error):
"""Closes the database again at the end of the request."""
if hasattr(g, 'sqlite_db'):
g.sqlite_db.close()

但是,应用程序上下文的拆除是否会删除(唯一的)对数据库连接的引用(因为 g.sqlite_dbg 消失时消失)?我认为这会自动关闭连接(因为数据库驱动程序会 close the connection on del )。显式关闭连接有什么好处?

最佳答案

当对连接的引用丢失时,它仍然不会关闭连接。

很多数据库也保持打开的连接,如果你不“通知”它连接已关闭,连接将仍然存在于数据库端并继续使用资源等。

这不是特定于 python 或 flask。

关于python - 为什么关闭数据库连接需要 teardown_appcontext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40493681/

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