如何将会话保存在Postgres数据库中?

时间:2019-05-08 11:18:04

标签: python postgresql session flask

在我们的一个新项目中,我们希望将会话数据存储到PostgreSQL数据库中。

我在互联网上找到了几个代码段来执行此操作,但是没有一个特定于PostgreSQL。

1 个答案:

答案 0 :(得分:2)

使用Flask-Session project;它提供了Flask会话实现,可以将数据存储在任何SQLAlchemy supported database中,包括PostgreSQL。

  1. 安装supported PostgreSQL client libraries之一;大多数人使用psycopg2
  2. 安装Flask-SQLAlchemy;这样做时,它将拉入SQLAlchemy。该库将SQLAlchemy与Flask集成在一起。
  3. 安装Flask-Session并将其配置为使用SQLAlchemy会话类型和PostgreSQL连接URI;为此,请在Flask配置中添加以下配置选项:

    SESSION_TYPE = "sqlalchemy"
    # URI to connect to the database. postgresql:// uses psycopg2, see the documentation
    SESSION_SQLALCHEMY = "postgresql://<user>:<password>@hostname:port/database"
    # What table in the database to use, default is "sessions"
    SESSION_SQLALCHEMY_TABLE = "sessions"
    
  4. 在Flask应用中使用Flask-Session扩展;以下代码假定您拥有一个app对象的Flask()变量,并且已经使用上述配置进行了配置:

    from flask_session import Session
    
    # app has been set and configured
    Session(app)
    
    # alternatively, create a `Session()` object without passing in app
    # and then when ready, use `.init_app(app)`:
    # sess = Session()
    # sess.init_app(app)
    

要强调一点:因为Flask-Session使用SQLAlchemy,所以它可以与 SQLAlchemy支持的所有数据库引擎一起使用,而不仅仅是PostgreSQL。因此,以上内容适用于SQLite,MySQL,Oracle,Microsoft SQL Server,Firebird,Sybase以及具有第三方SQLAlchemy方言包的任何其他数据库。