Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 作用于同一数据库的不同版本的Alembic迁移_Python_Sqlalchemy_Alembic - Fatal编程技术网

Python 作用于同一数据库的不同版本的Alembic迁移

Python 作用于同一数据库的不同版本的Alembic迁移,python,sqlalchemy,alembic,Python,Sqlalchemy,Alembic,我正在尝试使用alembic迁移来处理同一数据库的不同版本。例如,我有两个数据库,一个是实时数据库,另一个是测试数据库。他们每个人都可能处于不同的迁移状态。首先,测试数据库可能根本不存在 假设live有一个包含a列和B列的table1表。现在我想添加C列。我将模型更改为包含C,并生成一个迁移脚本,该脚本包含以下代码 op.add_column('table1', sa.Column('C', sa.String(), nullable=True)) 这在现有的实时数据库中运行良好 如果我现在调

我正在尝试使用alembic迁移来处理同一数据库的不同版本。例如,我有两个数据库,一个是实时数据库,另一个是测试数据库。他们每个人都可能处于不同的迁移状态。首先,测试数据库可能根本不存在

假设live有一个包含a列和B列的table1表。现在我想添加C列。我将模型更改为包含C,并生成一个迁移脚本,该脚本包含以下代码

op.add_column('table1', sa.Column('C', sa.String(), nullable=True))
这在现有的实时数据库中运行良好

如果我现在调用alembic upgrade head引用一个不存在的测试数据库,我会得到一个操作错误duplicate列名。。。错误我假设这是由于我的模型包含了C列,并且alembic/sqlalchemy会在不存在完整表的情况下自动创建完整表


我应该简单地捕捉错误,还是有更好的方法

我建议,在新创建测试数据库后,应立即在其上加盖head标记

command.stamp(configs_for_test_db, 'head')  
这将继续进行,并在不实际运行迁移的情况下将标题修订号插入相应的alembic表中,以便修订号将反映数据库的状态,即新创建的数据库是最新的wrt迁移。db盖章后,alembic升级应正常运行