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

    回退到指定歷史版本

相關文章
相關標籤/搜索