转自博客@ying847782627


在修改模型更新数据库总是出错,现把大概见到的错误总结一下。
1.
数据库关系不正确。在刚添加的模型中,如果不是非常确定,并且添加的模型比较多的话,建议先写简单的模型,探索明白具体过程,确定没有其他问题的时候,再添加复杂关系依赖。并且一定要设置debuge=True.此时再根据报错修改关系就简单多了。

2.
如果是直接在模型上添加一列的话,操作步骤为,修改模型–>执行迁移–>更新数据库

3.
如果是在模型上删除一列的话就会出现问题,因为sqlalchemy是不允许删除列的。如下会报错:


解决办法有两种

(1),如果此时数据库还没有存数据,只是在生产阶段初期。可以粗暴的删掉整个数据库重建。具体办法为删除migrations文件夹下versions文件夹里面的数据,以及数据库文件如data.sqlite。然后执行迁移更新。

(2),如果数据库里存了文件,要删除其中的一列,暴力删除的话会删除掉存的数据,此时的解决办法是借助SQLiteExpertPers.首先在数据模型中删除对应的一行。然后再可视化数据库SQLiteExpertPers中删除对应的列,刷新。然后再执行迁移更新数据库就不会出错了。