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

    回退到指定歷史版本

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM