什么是数据库迁移?
所谓数据库迁移就是这个数据库到另一个数据库之间的任意形式的数据移动,说白了就是更新
什么时候用?
在开发过程中需要修改数据库模型 而且修改之后还要更新数据库。仅当数据库不存在时,flask_sqlalchemy才会根据模型创建,所以更新的唯一方式就是:
- 删除旧的数据库
- db.create_all()
旧数据库的数据自然而然丢失了,所以说更新表更好的办法就是数据库迁移。
flask_migrate
pip install flask_migrate
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
migrate = Migrate()
def create_app(config_name):
db.init_app(app)
migrate.init_app(app,db)
……
主程序:
from flask_script import Manager
from flask_migrate import MigrateCommand
app = create_app('default')
manager = Manager(app)
manager.add_command('db', MigrateCommand)
……
if __name__ == "__main__":
manager.run()
假设以上脚本存储在名为的文件中manage.py,则可以通过运行脚本来访问所有数据库迁移命令,当然如果没有数据库,那么它会首先生成根据model生成:
# 初始化迁移脚本文件夹
python manage.py db init
# 创建迁移脚本 在此你可以在迁移文件夹versions中检查脚本代码 自动迁移不一定总是正确的
python manage.py db migrate
# 确认无误 更新数据库
python manage.py db upgrade
如果使用迁移框架管理数据库,必须在迁移脚本中定义所有改动,否则改动将不可复现。
- 对数据库模型必要修改
- 执行python xxx.py migrate 生成脚本
- 检查脚本正确性
- upgrade