2017-03-22 10 views
0

フラスコの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 

答えて

0

どういうわけか、接続がされているように思われます漏れたconnect()ではなくget_conn()を使用できます。これにより、接続が2回開かれなくなります。

関連する問題