Я работаю над приложением фляги, которое использует флеш-безопасность для управления доступом. Из эха sqlalchemy
я заметил, что для каждой конечной точки, украшенной @roles_accepted
, она отправляет новый запрос в базу данных (слишком много повторных запросов). Ожидается ли такое поведение для безопасности колб? Есть ли способ сохранить информацию о пользователе в течение сеанса, чтобы уменьшить количество запросов?
@roles_accepted('admin')
def index():
...
return render_template('main.html')
Я нашел здесь пример для сеанса sqlalchemy. Я новичок в Flask, так что я не совсем понимаю, это то же самое, что пользовательский сеанс в браузере? Если да, то как мне интегрировать это в мое приложение? Я смущен тем, как database.py
работает в примере. Любая помощь приветствуется!
my db
инициируется с помощью create_app()
. Нужно ли создавать новый сеанс в этом случае? Или как мне использовать экземпляр db
в create_app
в примере?
db = SQLAlchemy()
def create_app()
...
db.init_app(app)
https://pythonhosted.org/Flask-Security/quickstart.html
database.py
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('sqlite:////tmp/test.db', \
convert_unicode=True)
db_session = scoped_session(sessionmaker(autocommit=False,
autoflush=False,
bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()
def init_db():
# import all modules here that might define models so that
# they will be registered properly on the metadata. Otherwise
# you will have to import them first before calling init_db()
import models
Base.metadata.create_all(bind=engine)