1
我试图使用SQLite数据库为我的烧瓶应用程序启用服务器端会话。注意我使用的是Flask-Sessionstore,这是Flask-Session的硬分支,并且更加主动地维护。但是,当我使用这两个库时,我遇到了同样的错误。这里是我的app.py
代码:flask-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)
当我运行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)]
看来我需要在运行应用程序之前创建该表。我怎样才能做到这一点?或者我错过了一个配置选项,如果它没有找到,为我创建表?
测试例子来看看我不需要两个配置线,因为他们已经是默认值。但是,最后一行'session.app.session_interface.db.create_all()'正是我在寻找的谢谢! –