Согласно документам flask, мы должны закрыть соединение с базой данных, когда контекст приложения разрывается:
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_db
исчезает, когда g
исчезает)? Я думал, что это автоматически закроет соединение (поскольку драйвер базы данных закроет соединение на del
а>). В чем преимущество явного закрытия соединения?