フラスコのpythonフレームワークとSqliteをデータベースとして使用して、単純なソーシャルメディアアプリケーションを作成しています。しかし、プログラムを実行すると、次のエラーが表示されます。私はこのバグの原因を混乱させています。FlaskアプリケーションでのPeewee操作上のエラー
peewee.OperationalError: Connection already open
私の計画は、ユーザーが自分のメールアドレスを入力し、ログインするpassowordことができるように、ログインビューを作成することです。これまではログイン用のビューを作成し、ユーザーをインデックスページにリダイレクトしていました。上記のエラーは、データベースを閉じていないことを示しています。しかし、私はへの接続、およびデータベースを閉じるために書かれました(models.py
で)二つの機能を以下に示す:
def initialize():
DATABASE.connect()
DATABASE.create_tables([User], safe=True)
DATABASE.close()
そして、私はそれで
if __name__ == '__main__':
models.initialize()
app.run(debug=True, port=8000, host='0.0.0.0')
models.initialize()
app.py
でそれを呼び出します
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