Flask Web 的資料庫遷移

Flask Web 的數據庫遷移

,為什麼要遷移?

在開發過程中,容易出現修改數據庫模型的時候,修改之後還要跟新數據庫。由於當數據庫表不存在的時Flask-SQLAlchemy才會根據模型創建,這樣就是前面說的粗暴更新法,先刪除舊錶在創建新表,不過數據會丟失,因此並不是好方法,所以,遷移技術就有大用途了。使用數據庫遷移框架更新表,能跟蹤數據庫模式的變化,然後增量式的變化應用到數據庫中。

Flask Web 的數據庫遷移

二,使用框架遷移

Flask程序中可以使用Flask-Migrate擴展,這個擴展是對Alembic的輕量包裝,集成到了Flask-Script中,所有的操作通過Flask-Script命令完成。使用pip 安裝flask-migrate即可。

創建遷移數據庫:使用init子命令創建,例,python hello.py db init,這會創建一個migrations文件夾,所有遷移腳本都放在其中。提醒:數據庫遷移倉庫中的文件要和程序的其他文件一起納入版本控制。

創建遷移腳本:遷移腳本有兩個函數,分別是upgrad()和downgrade()。upgrade()函數把遷移中的改動應用到數據庫中,downgrade()函數則將改動刪除。因為Alembic具有添加和刪除改動的能力,因此數據庫可以重設到修改歷史的任意一點。對於創建遷移腳本,可以使用手動創建方式,也可以使用自動創建,不過注意的是,自動創建並不總是正確的,可能會漏掉一些細節,因此要自己檢查。

更新數據庫:創建好遷移腳本後,就可以使用命令db upgrade把遷移應用到數據庫中。說明一下,第一次遷移,其作用和調用db,create_all()方法一樣,但在後續的遷移中,upgrade命令能把改動應用到數據庫中,且不影響其中保存的數據,好使。

Flask Web 的數據庫遷移


分享到:


相關文章: