J'essaie d'activer des sessions côté serveur pour mon application flask en utilisant une base de données SQLite. Note J'utilise Flask-Sessionstore qui est un fork dur de Flask-Session et est maintenu plus activement. Cependant, j'obtiens la même erreur quand j'utilise les deux bibliothèques. Voici mon code pour app.py
:flask-session: comment créer la table de session
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)
Quand je lance l'application avec python app.py
tout commence et fonctionne comme prévu. Cependant, lorsque je tente d'accéder à la page d'index à http://127.0.0.1:5000 je reçois l'erreur suivante:
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)]
Il semble que je dois créer ce tableau avant d'exécuter l'application. Comment puis-je faire ceci? Ou est-ce que je manque une option de configuration qui crée la table pour moi si elle n'est pas trouvée?
Je ne ai pas besoin les deux lignes de configuration, car ils sont déjà les valeurs par défaut. Cependant, cette dernière ligne 'session.app.session_interface.db.create_all()' est exactement ce que je cherchais merci! –