Как использовать Flask-Session? Вероятно, проблема определения схемы там
Я использовал эту документацию в качестве руководства. Но после настройки
url = 'postgresql://{0}:{1}@{2}/{3}'.format(database_settings['user'], database_settings['password'], database_settings['host'], database_settings['dbname'])
app.config['SQLALCHEMY_DATABASE_URI'] = url
app.config['SESSION_TYPE'] = 'sqlalchemy'
Я получил ошибку:
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) relation "sessions" does not exist
LINE 2: FROM sessions
Итак, я создал таблицу вручную (psql). Но это ничего не меняет. Я был уверен, что проблема заключается в определении схемы, но я не нахожу способа сделать это. (настроить схему (не для моделей, а для приложения) очень сложно с колбой + sqlalchemy). Я пытался создать orm.session со схемой, но это не помогло. В этот момент я все еще вижу эту проблему. Flask-Session успешно отправляет запрос на проверку session_id в БД, но не находит таблицы сеансов...
Полная ошибка:
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) relation "sessions" does not exist
LINE 2: FROM sessions
^
[SQL: 'SELECT sessions.id AS sessions_id, sessions.session_id AS sessions_session_id, sessions.data AS sessions_data, sessions.expiry AS sessions_expiry \nFROM sessions \nWHERE sessions.session_id = %(session_id_1)s \n LIMIT %(param_1)s'] [parameters: {'param_1': 1, 'session_id_1': 'session:2d3cfe3f-acd9-42e8-998d-aa7111704db3'}]
init_app.py:
from flask import Flask
from flask_session import Session
from flask_sqlalchemy import SQLAlchemy
from dev.config import database_settings
class AppObjectsInit(object):
_instance = None
def __new__(cls):
if not isinstance(cls._instance, cls):
cls._instance = object.__new__(cls)
cls._instance.__init_app()
return cls._instance
def __init__(self):
pass
def __init_app(self):
self.__app = Flask(__name__)
url = 'postgresql://{0}:{1}@{2}/{3}'.format(database_settings['user'], database_settings['password'], database_settings['host'], database_settings['dbname'])
self.__app.config['SQLALCHEMY_DATABASE_URI'] = url
self.__app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
self.__db = SQLAlchemy(self.__app)
self.__app.config['SESSION_TYPE'] = 'sqlalchemy'
Session(self.__app)
Мое приложение работает правильно с другими таблицами в моей схеме. Но для каждой модели я установил
__table_args__ = {'schema': 'my_schema'}