2017-08-25 16 views
1

SQLiteデータベースを使用してフラスコアプリケーションのサーバー側セッションを有効にしようとしています。私はFlask-Sessionのハードフォークであり、より積極的に維持されているFlask-Sessionstoreを使用しています。しかし、両方のライブラリを使用すると同じエラーが発生します。ここでapp.pyのための私のコードは次のとおりです。フラスコセッション:セッションテーブルの作成方法

from flask import Flask, session 
from flask_sqlalchemy import SQLAlchemy 
from flask_sessionstore import Session 

app = Flask(__name__) 
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////Users/Johnny/DBs/test.db' 
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # quiet warning message 
app.config['SESSION_TYPE'] = 'sqlalchemy' 
Session(app) 

@app.route('/') 
def index(): 
    return 'Hello World!' 

if __name__ == '__main__': 
    app.run(debug=True) 

予想通り、私はpython app.pyすべてが起動し、実行してアプリケーションを実行すると。私はhttp://127.0.0.1:5000でインデックス・ページにアクセスしようとすると、しかし、私は次のエラーを取得する:

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: sessions [SQL: 'SELECT sessions.id AS sessions_id, sessions.session_id AS sessions_session_id, sessions.data AS sessions_data, sessions.expiry AS sessions_expiry \nFROM sessions \nWHERE sessions.session_id = ?\n LIMIT ? OFFSET ?'] [parameters: ('session:xxx...', 1, 0)] 

私がアプリケーションを実行する前に、このテーブルを作成する必要が表示されます。これどうやってするの?または、私のためのテーブルが見つからない場合にそれを作成する設定オプションがないのですか?

答えて

2

あなたにも、あなたのアプリの設定でこれを提供する必要があります:

dbはSQLAlchemyのインスタンスである
app.config[SESSION_SQLALCHEMY_TABLE] = 'sessions' 
app.config[SESSION_SQLALCHEMY] = db 

。あなたは、彼らがすでにデフォルトですので、私は2本のコンフィギュレーションラインを必要としない flask_sessionstore on github

+1

の試験例を見てみることができます

db = SQLAlchemy(app) session = Session(app) session.app.session_interface.db.create_all() 

:だからあなたのようなものを持っている必要があります。しかし、その最後の 'session.app.session_interface.db.create_all()'は、まさに私が感謝のために探していたものです! –

関連する問題