我是否需要创建一个会话表来使用 Flask-Session SqlAlchemySessionInterface

Fla*_*Ife 3 python python-3.x flask-sqlalchemy flask-session

我正在尝试在我的 python 应用程序中实现 Flask-Session。我在文档中读到,建议使用另一个接口,例如 ,而SqlAlchemySessionInterface不是NullSessionInterface在未向配置密钥提供任何内容时使用的默认接口SESSION_TYPE

从 Session 类下的flask_session/ init .py 文件中读取

默认情况下 Flask-Session 将使用 :class: NullSessionInterface,您确实应该配置您的应用程序以使用不同的 SessionInterface。

SESSION_TYPE将配置键设置为后"sqlalchemy"出现错误

sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) relation "sessions" does not exist
Run Code Online (Sandbox Code Playgroud)

这表明 Flask-Session 正在寻找在我的数据库模型中使用名为“sessions”的表,但我在 Flask-Session 文档中找不到任何地方指出应该创建一个表以及它应该具有哪些字段。

有人可以建议解决这个问题吗?

Nic*_* K9 6

我想使用 Flask-session,但我也在使用 Flask-migrate,并且不想手动调用 db.create_all() 并破坏迁移路径。幸运的是,@Flashspeedlife 关于仅导入接口并实例化它的建议是有效的。

应用程序/__init__.py:

from flask_session import SqlAlchemySessionInterface
from app.extensions import db, sess, migrate # My extensions file

def create_app():
    app = Flask(__name__)
    with app.app_context():
         db.init_app(app)
         migrate.init_app(app, db)

         sess.init_app(app)
         SqlAlchemySessionInterface(app, db, "sessions", "sess_")
Run Code Online (Sandbox Code Playgroud)

现在,flask db migrate使用新的会话表生成一个 alembic 脚本。