我是Flask和Flask-Migrate的新手。
运行python manage.py db migrate -m "explanation"
时,我对models.py所做的任何更改都会自动应用于数据库(在这种情况下,将列添加到某个表中)。
我认为只有在运行python manage.py db upgrade
后才会应用更改?
此外,在上面的示例中,迁移文件包含两个函数:upgrade
和downgrade
。但是,它们都是空的......他们应该包括我想要应用于数据库的更改吗?
我已阅读文档,似乎与实际发生的情况相矛盾。在此先感谢您的帮助!
答案 0 :(得分:2)
Flask-Migrate
的工作原理并非如此。 migrate
命令发现并生成架构更改,使用迁移描述代码将其写入包含upgrade
和downgrade
函数的文件。
使用python manage.py db upgrade
命令更改数据库。
我怀疑您在运行migrate
命令时丢弃数据库并重新创建它。类似的东西:
db.drop_all()
db.create_all()
它可能会在Flask-Migrate
能够分析架构之前重新创建数据库。