在使用Alembic升级表模式之前,请检查升级是否正确运行

时间:2017-10-11 11:05:15

标签: python sqlalchemy alembic flask-migrate

我有一个样本表

class a(Base):
    __tablename__ = 'a'
    id = Column(Integer,primary_key=True)
    username = Column(VARCHAR(255))

现在我对其他表进行了一些更改,并在上面的表格中为“username”列添加了唯一约束。

class a(Base):
    __tablename__ = 'a'
    id = Column(Integer,primary_key=True)
    username = Column(VARCHAR(255),unique=True)  # unique key added.

我运行python run.py db migrate命令,它会检测所有更改。没有任何问题。 现在我运行python run.py db upgrade。这使得数据库中的所有模式更改都会在上述表的唯一约束下失败,因为该表已经具有重复数据。现在我需要恢复所有数据库更改以回到我以前的版本(我无法想象如何做到这一点)。无论如何,在将架构更改提交到数据库之前,是否测试所有升级是否正常运行?如果没有,请帮助我如何恢复所有数据库更改。

1 个答案:

答案 0 :(得分:0)

Alembic将迁移中的更改视为原子更改。如果迁移中的最后一件事失败了,那么整个迁移将被丢弃,因此您总是会留下一致的数据库。