Skip to main content
 首页 » 编程设计

python之flask session : how to create the session table

2025年05月04日22jpfss

我正在尝试使用 SQLite 数据库为我的 Flask 应用程序启用服务器端 session 。注意我正在使用 Flask-Sessionstore这是 Flask-Session 的硬 fork 并且得到更积极的维护。但是,当我同时使用这两个库时,我遇到了同样的错误。这是我的 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)] 

看来我需要在运行应用程序之前创建此表。我怎样才能做到这一点?或者我是否缺少一个配置选项,如果找不到该选项可以为我创建表格?

请您参考如下方法:

您还需要在您的应用配置中提供此信息:

app.config[SESSION_SQLALCHEMY_TABLE] = 'sessions' 
app.config[SESSION_SQLALCHEMY] = db 

其中 db 是 sqlAlchemy 实例。所以你应该有这样的东西:

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

可以看看 flask_sessionstore on github的测试例子