flask 更新数据库

 

在作项目的过程当中,咱们都遇到过,常常须要修改咱们数据库的字段,在flask中,是经过ORM(对象关系映射)来建立数据库的,表--->model class,字段---->属性python

在flask中,咱们是经过第三方插件SQLAlchemy来建立数据库表,采用的是db.create_all()方法,这样,在咱们修改数据库的Model的字段以后,想要同步数据库,就只能经过删除表,而后从新调用db.create_all()来完成。数据库

因此,flask引入了flask_script 和 flask_migrate(pip install)来解决这个问题:flask

一、新建manager.py文件,编写以下:app

  from flask_script import Managerspa

  from flask_migrate import Migrate, MigrateCommond插件

  from app import app对象

  from apps.models.base import dbblog

 

  manager = Manager(app)ip

  # 要使用flask-migrate,必须先绑定db和app同步

  migrate = Migrate(app, db)

  # 将MigrateCommand添加到manager中,"db"是自定义命令

  manager.add_command("db", MigrateCommond)

  

  if __name__ == "__main__":

    manager.run()

 

二、打开终端,进入项目根目录,执行下面命令

  python manager.py db init

  初始化成功后,你的项目目录多了一个migrattions文件夹

  

 

三、而后每次在修改了model的字段后,执行下面的命令

  python manager.py db migrate

  从执行过程当中咱们能够看到咱们修改的字段

  

 

  执行完成后,再去查看生成的migrations文件夹,下面的versions里面会多出来一个.py的迁移脚本文件,检查表格及字段

  

三、更新数据库

  python manager.py db upgrade

  upgrade会自动读取刚才生成的文件,将数据更新到数据库中。

  

  执行完成后,检查你的数据库,发现数据库字段按照咱们的须要更新了。

【注1: python manager.py db migrate 将模型生成迁移文件,只要模型修改了,就执行一次这个命令】

【注2:python manger.py db upgrade 将迁移文件真正映射到数据库中,每次运行了migrate命令,就要记得运行这个命令,否则数据库中的信息是不会被修改的。】

【注3:记得要把对应的模型引入到manager.py文件中,否则执行命令是不会起做用的哦^_^】

 

四、回滚事物

  1)运行 python manager.py db history

    查看历史版本,获得history-id

  2)运行 python manager.py db downgrade history-id

    回退到指定历史版本

相关文章
相关标签/搜索