我正在使用flask python框架和Sqlite作为数据库编写一个简单的社交媒体应用程序。但运行该程序后,它显示以下错误。我有点困惑是什么导致了这个错误。
peewee.OperationalError: Connection already open
我的计划是创建一个登录视图,以便用户可以输入他们的电子邮件,并通过密码登录。到目前为止,我已经创建了一个登录视图,它将用户重定向回索引页面。上述错误表明我还没有关闭数据库。但是,我为了连接和关闭数据库而编写的两个函数(models.py
)如下:
def initialize():
DATABASE.connect()
DATABASE.create_tables([User], safe=True)
DATABASE.close()
我通过app.py
models.initialize()
中将其称为
if __name__ == '__main__':
models.initialize()
app.run(debug=True, port=8000, host='0.0.0.0')
使用函数修饰符app.py
具有以下方法:
@app.before_request
def before_request():
"""Connect to the database before each request"""
g.db = models.DATABASE
g.db.connect()
@app.after_request
def after_request(response):
"""Close the database after each request"""
g.db.close()
return response
答案 0 :(得分:0)
不知何故,似乎连接被泄露了。您可以使用get_conn()
代替connect()
,这样可以确保连接不会打开两次。