【问题标题】:How to save sessions in a Postgres database?如何在 Postgres 数据库中保存会话?
【发布时间】:2019-05-08 11:18:03
【问题描述】:

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

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

【问题讨论】:

    标签: python postgresql session flask


    【解决方案1】:

    使用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 方言包可用的其他数据库。

    【讨论】:

    • 感谢您及时明确的回答。实际上,我正在使用基于 apache Flask 构建的 Apache Superset 应用程序。有了你的回答,我可以达到我的要求。再次感谢。
    • @BinuVPillai:Apache Superset 建立在 Flask 之上;所以它不是“Apache Flask”,只是“Flask”。 Apache Superset 实际上只是一个已经为您设置了特定配置和扩展的 Flask 应用程序,更改它处理会话的方式与其他 Flask 应用程序没有什么不同。
    猜你喜欢
    • 1970-01-01
    • 2016-06-10
    • 2018-11-19
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 2012-05-20
    相关资源
    最近更新 更多