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

Bin*_*lai 4 python postgresql session flask

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

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

Mar*_*ers 9

使用Flask-Session 项目;它提供了一个 Flask 会话实现,可以将数据存储在任何SQLAlchemy 支持的数据库中,包括 PostgreSQL。

  1. 安装受支持的 PostgreSQL 客户端库之一;大多数人使用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"
    
    Run Code Online (Sandbox Code Playgroud)
  4. 在 Flask 应用程序中使用 Flask-Session 扩展;以下代码假设您有一个app作为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"
    
    Run Code Online (Sandbox Code Playgroud)

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