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'),
]