@app.teardown_appcontext
时间: 2023-12-02 13:05:21 浏览: 191
`@app.teardown_appcontext`是Flask框架提供的一个装饰器,它可以在应用程序上下文被销毁时自动关闭数据库连接。通常情况下,你可以在这个装饰器中编写一些清理代码,例如关闭数据库连接、删除临时文件等。以下是一个使用`@app.teardown_appcontext`的示例代码:
```python
import sqlite3
from flask import Flask, g
app = Flask(__name__)
def get_db():
if 'db' not in g:
g.db = sqlite3.connect(
'reptile.db',
detect_types=sqlite3.PARSE_DECLTYPES
)
g.db.row_factory = sqlite3.Row
return g.db
@app.teardown_appcontext
def close_db(error):
db = g.pop('db', None)
if db is not None:
db.close()
```
在这个例子中,我们使用了Flask框架的上下文管理器`g`来存储数据库连接。在`get_db`函数中,我们检查`g`中是否有数据库连接,如果没有,则创建一个。在`close_db`函数中,我们从`g`中弹出数据库连接,如果它存在,则关闭连接。这个函数会在应用程序上下文被销毁时自动调用,以确保数据库连接被正确关闭。
阅读全文