我正在使用Flask安全性来管理访问的Flask应用程序。我从sqlalchemy
回声中注意到,对于@roles_accepted
装饰的每个端点,它都会向数据库发送一个新查询(重复请求太多)。这种行为对于烧瓶安全性是预期的吗?有什么方法可以将用户信息保留在会话中以减少查询请求的数量?
@roles_accepted('admin')
def index():
...
return render_template('main.html')
我在这里找到sqlalchemy会话的示例。我是Flask的新手,所以我不太了解这与浏览器中的用户会话相同吗?如果是这样,如何将其集成到我的应用程序中?我对示例中的database.py
的工作方式感到困惑。任何帮助表示赞赏!
我的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)