Python Flask学习_使用Flask-Migrate实现数据库迁移
2018-06-23 10:07
846 查看
在开发过程中,有时需要 修改数据库模型,修改之后还需要更新数据库。使用SQLAlchmey更新数据库表,只能删除旧表,新建新表,数据也会丢失。
因此,SQLAlchemy编写了一个迁移框架:Alembic,除了直接使用Alembic外。还可以使用Flask-Migrate集成到Flask-Scriot中,所有操作都通过Flask-Script命令完成。
一、将MigrateCommand类添加到manager对象上
# manager.py import os from app import create_app, db from app.models import User,Role from flask_script import Manager,Shell from flask_migrate import Migrate, MigrateCommand app = create_app(os.getenv('FLASK_CONFIG') or 'default') manager = Manager(app) migrate = Migrate(app,db) # def make_shell_context(): return dict(app=app, db=db, User=User, Role=Role) manager.add_command('shell',Shell(make_context=make_shell_context)) #为python manager.py 添加启动选项 manager.add_command('db',MigrateCommand) #添加命令 if __name__=='__main__': manager.run()
二、创建迁移仓库
这个命令创建了migrations文件夹,所有的迁移脚本放在里面。
其中,versions目录下面的.py文件是不同的版本。如果需要从旧迁移脚本升级到新迁移脚本,只需跳到四:根据迁移脚本更新数据库。
三、创建迁移脚本
在Alembic(Flask-Migrate)中 ,数据库迁移用迁移脚本表示 。脚本中有两个函数,分别是upgrade()和downgrade()。
upgrade():把迁移中的改动应用到数据库中;
downgrade():将改动删除。
创建迁移脚本有两种方式:手动和自动
手动:使用revision命令手动创建迁移脚本,创建的只是骨架,upgrade()和downgrade()函数都是空的,需要手动填写 。
自动:migrate子命令用来自动创建迁移脚本。根据模型定义和数据库当前状态之间的差异生成upgrade()和downgrade()函数的内容。(自动创建的迁移脚本不一定正确,有可能会漏掉一些 细节 ,因此一定要检查 )
四、根据迁移脚本更新数据库
相关文章推荐
- 数据库(三)为Python shell添加新的功能和使用Flask-Migrate实现数据库迁移
- Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
- 使用 Flask-Migrate 实现数据库迁移
- Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
- python使用flask-migrate迁移数据库时遇到的问题
- Flask从入门到精通之使用Flask-Migrate实现数据库迁移
- Python Flask学习_使用flask-login实现认证蓝本(一)
- Python Flasky学习_使用Flask_SQLAlchemy的asPagination类对象实现分页
- Python Flask学习_使用flask-login实现认证蓝本(二)
- 使用Flask-migrate 执行数据库迁移命令 遇见的坑
- Flask-Migrate实现数据库迁移
- 4.5用flask-migrate实现数据库迁移
- Python Flask学习_使用flask-login实现认证蓝本 (三)
- 用flask开发个人博客(22)—— 使用Flask-Migrate实现数据库的更新
- PYthon psycopg2 数据库使用学习
- Laravel数据库迁移文件migrate使用约定
- Python学习——实现简单的交互raw_input的使用
- Python的Flask框架应用程序实现使用QQ账号登录的方法
- 使用python的Flask实现一个RESTful API服务器端[翻译]
- flask-admin章节三:数据库迁移工具 alembic初步使用