Sqlalchemy Alembic中的种子数据问题

Sqlalchemy Alembic中的种子数据问题,sqlalchemy,seeding,alembic,Sqlalchemy,Seeding,Alembic,我已经使用SQLAlchemy一年了。我使用Alembic来迁移更改 我还使用alembic为数据播种。以授权种子为例 def upgrade(): op.bulk_insert(Role.__table__, ROLE_LIST) op.bulk_insert(Permission.__table__, PERMISSION_LIST) op.bulk_insert(RolePermission.__table__, ROLE_PERMISSION_LIST) def

我已经使用
SQLAlchemy
一年了。我使用
Alembic
来迁移更改

我还使用alembic为数据播种。以
授权
种子为例

def upgrade():
    op.bulk_insert(Role.__table__, ROLE_LIST)
    op.bulk_insert(Permission.__table__, PERMISSION_LIST)
    op.bulk_insert(RolePermission.__table__, ROLE_PERMISSION_LIST)

def downgrade():
    [op.execute(a_table.__table__.delete()) for a_table in [RolePermission, Permission, Role]]
如果我们假设我的数据集不会有任何变化,那么这个方法就完美了。(在我的情况下,权限、角色等)

但事实并非如此。我将有新的角色和权限以及角色权限映射。而且,
alembic upgrade head
不会迁移新数据,因为我的
head
远远领先于种子迁移

我可以只在各自的修订版中拥有数据,但我还在我的业务逻辑中使用角色列表和权限列表

有什么方法可以在迁移中执行
replace
查询吗?还有更好的选择吗

ROLE_LIST = [
    dict(id=generate_business_id(), name='customer', default=1),
    dict(id=generate_business_id(), name='admin', default=0), 
]
PERMISSION_LIST = [
    dict(id=generate_business_id(), name='profile'),
    dict(id=generate_business_id(), name='delete_user'),
    dict(id=generate_business_id(), name='make_payment'),
]