首页 > 解决方案 > 带有 Flask 的 SQLALchemy 中的静态模型实例(夹具)

问题描述

我正在使用 SQLAlchemy 开发一个 Flask 应用程序。对于授权,我使用的是用户角色,这是一个简单的 SQLAlchemy 模型,与用户有 m2m 关系。我希望在应用程序启动时自动创建一些角色,例如“管理员”,以防它们尚不存在。这类似于单元测试的夹具,只是没有测试部分。

我已经尝试将所需的代码放入使用before_app_first_request装饰器注册的函数中,但是我需要推送一个应用程序上下文才能使其工作。我无法在相关代码中访问该应用程序,因为它是独立蓝图的一部分。

代码看起来类似于:

from app import db
my_blueprint = flask.Blueprint(...)
from .models import Role


@my_blueprint.before_app_first_request
def load_fixtures():
    admin_role = Role.query.filter_by(name='admin').first()
    if coach_role is None:
        db.session.add(Role(name='admin'))
        db.session.commit()

有没有首选的方法来做到这一点?即在应用程序启动时运行固定装置?

标签: pythonflasksqlalchemyfixtures

解决方案


推荐阅读