我用Flask创建了一个python web应用程序,似乎我与数据库有连接问题。我想这是因为我没有在代码的某个地方关闭我的会话。
我
db = SQLAlchemy(app)
为数据库,并使用
@views.route('/test/', methods=['GET', 'POST'])
def test():
db.session.add(something)
db.session.commit()
@views.route('/another_page/', methods=['GET', 'POST'])
def page():
some_records = User.query.get(some_ids)
向数据库添加记录。
在这种情况下,我什么时候必须关闭会话?用户离开后是否有办法关闭连接?是否应该在每次使用数据库完成一个页面时关闭该页面?查询后需要关闭连接吗?
文档中说:
与声明式方法一样,您需要在每次请求或应用程序上下文关闭后关闭会话。把它放到你的应用模块中:
from yourapplication.database import db_session
@app.teardown_appcontext
def shutdown_session(exception=None):
db_session.remove()
UPD:在Flask-SQLAlchemy的情况下,这个staff是硬编码的,因此在开发时不需要关心它。