如何在flask应用程序中重新打开sqlite连接?

时间:2017-06-12 19:13:11

标签: python python-3.x flask sqlite

我正在关注flask homepage

中的官方SQLite教程

这是第一个片段:

import sqlite3
from flask import g

DATABASE = '/path/to/database.db'

def get_db():
    db = getattr(g, '_database', None)
    if db is None:
        db = g._database = sqlite3.connect(DATABASE)
    return db

@app.teardown_appcontext
def close_connection(exception):
    db = getattr(g, '_database', None)
    if db is not None:
        db.close()

但是当我使用这段代码并进行两次查询数据库的调用时,它在第二次调用时失败:

  

sqlite3.ProgrammingError:无法在已关闭的数据库上运行。

这是有道理的,因为db连接在第一次调用结束时关闭,然后在第二次调用时没有重新打开,因为db is None为false。

如何重新打开数据库?

1 个答案:

答案 0 :(得分:1)

如果在关闭数据库时从上下文中删除数据库,则会在下次请求时重新打开它。

document.getElementById