Как сохранить сессии в базе данных Postgres? - PullRequest
0 голосов
/ 08 мая 2019

В одном из наших новых проектов мы хотим сохранить данные сеанса в базе данных PostgreSQL.

Я нашел несколько фрагментов кода в Интернете, чтобы сделать это, но ни один не был предназначен для PostgreSQL.

1 Ответ

2 голосов
/ 08 мая 2019

Использовать проект Flask-Session ; он предлагает реализацию сеанса Flask, которая может хранить данные в любой поддерживаемой SQLAlchemy базе данных , включая PostgreSQL.

  1. Установите одну из поддерживаемых клиентских библиотек PostgreSQL ; большинство людей используют psycopg2 .
  2. Установить Flask-SQLAlchemy ; когда вы это сделаете, это вызовет SQLAlchemy. Эта библиотека интегрирует SQLAlchemy с Flask.
  3. Установите Flask-Session и настройте его для использования типа сеанса SQLAlchemy и URI-соединения PostgreSQL; сделайте это, добавив следующие параметры конфигурации в свою конфигурацию 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-Session в вашем приложении Flask; В следующем коде предполагается, что у вас есть переменная 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...