zoukankan      html  css  js  c++  java
  • flask 更新数据库

    在做项目的过程中,我们都遇到过,经常需要修改我们数据库的字段,在flask中,是通过ORM(对象关系映射)来创建数据库的,表--->model class,字段---->属性

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

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

    1、新建manager.py文件,编写如下:

      from flask_script import Manager

      from flask_migrate import Migrate, MigrateCommond

      from app import app

      from apps.models.base import db

      manager = Manager(app)

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

      migrate = Migrate(app, db)

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

      manager.add_command("db", MigrateCommond)

      

      if __name__ == "__main__":

        manager.run()

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

      python manager.py db init

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

      

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

      python manager.py db migrate

      从执行过程中我们可以看到我们修改的字段

      

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

      

    3、更新数据库

      python manager.py db upgrade

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

      

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

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

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

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

    4、回滚事物

      1)运行 python manager.py db history

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

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

        回退到指定历史版本

        

  • 相关阅读:
    NoSQL学习之路[索引贴]
    MongoDB学习 (五):查询操作符(Query Operators).1st
    ASP.NET 设计模式 ( 组织业务逻辑层) 读书摘记4
    好慌好慌 举个栗子^
    读 VIM:七个高效编辑的习惯
    The Oauth2.0 Authorization Framework翻译part1
    关于twemproxy和redis分布式
    The Oauth2.0 Authorization Framework翻译part2
    Coin Slider jQuery插件使用方法
    Oracle数据库的三种标准的备份方法
  • 原文地址:https://www.cnblogs.com/fiona-zhong/p/10039943.html
Copyright © 2011-2022 走看看