麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Python > 正文

Python的Flask框架中使用Flask-Migrate擴展遷移數據庫的教程

2024-09-09 19:02:27
字體:
來源:轉載
供稿:網友

我們在升級系統的時候,經常碰到需要更新服務器端數據結構等操作,之前的方式是通過手工編寫alter sql腳本處理,經常會發現遺漏,導致程序發布到服務器上后無法正常使用。

現在我們可以使用Flask-Migrate插件來解決之,Flask-Migrate插件是基于Alembic,Alembic是由大名鼎鼎的SQLAlchemy作者開發數據遷移工具。

具體操作如下:

1. 安裝Flask-Migrate插件

$ pip install Flask-Migrate
2. 修改Flask App部分的代碼,以增加Migrate相關的Command
db = SQLAlchemy(app)migrate = Migrate(app, db)manager = Manager(app)manager.add_command('db', MigrateCommand)

3. 初始化

$ python app.py db init

使用Flask-Migrate遷移數據庫
隨著開發進度不斷向前,你會發現你的數據庫模型需要更改,而當這種情況發生時需要更新數據庫。

Flask-SQLAlchemy只有當數據庫表不存在了才從模型創建它們,所以更新表的唯一途徑就是銷毀舊的表,當然這將導致所有數據庫中的數據丟失。

有個更好的解決方案就是使用數據庫遷移框架。和源碼版本控制工具跟蹤更改源碼文件一樣,數據庫遷移框架跟蹤更改數據庫模型,然后將增量變化應用到數據庫中。

SQLAlchemy的主要開發人員寫了一個Alembic遷移框架,但我們不直接使用Alembic,Flask應用可以使用Flask-Migrate擴展,一個集成了Flask-Script來提供所有操作命令的輕量級Alembic包。

4. 創建遷移倉庫

首先,Flask-Migrate必須已經安裝到虛擬環境中:

(venv) $ pip install flask-migrate

下面展示擴展如何初始化:

from flask.ext.migrate import Migrate, MigrateCommand # ...migrate = Migrate(app, db)manager.add_command('db', MigrateCommand)

為了可以使用數據庫遷移命令,Flask-Migrate提供MigrateCommand類來連接Flask-Script的manager對象。在這個示例中使用db來連接到命令。

在數據庫遷移可以維護之前,必須通過init子命令來創建一個遷移庫:

(venv) $ python hello.py db init
 Creating directory /home/flask/flasky/migrations...done Creating directory /home/flask/flasky/migrations/versions...done Generating /home/flask/flasky/migrations/alembic.ini...done Generating /home/flask/flasky/migrations/env.py...done Generating /home/flask/flasky/migrations/env.pyc...done Generating /home/flask/flasky/migrations/README...done Generating /home/flask/flasky/migrations/script.py.mako...done Please edit configuration/connection/logging settings in '/home/flask/flasky/migrations/alembic.ini' before proceeding.

這個命令創建一個migrations文件夾,里面存放了所有遷移腳本。

建議:如果你有克隆在GitHub上的應用程序,你現在可以運行git checkout 5c來切換到這個版本的應用程序。

5. 創建遷移腳本

在Alembic,數據庫遷移工作由遷移腳本完成。這個腳本有兩個函數,分別叫做upgrade()和downgrade()。upgrade()函數實施數據庫更改,是遷移的一部分,downgrade()函數則刪除它們。通過添加和刪除數據庫變化的能力,Alembic可以重新配置數據庫從歷史記錄中的任何時間點。

Alembic遷移可以分別使用revision和migrate命令手動或自動創建。手動遷移通過由開發人員使用Alembic的Operations對象指令實現的空upgrade()和downgrade()函數創建遷移框架腳本。另一方面,自動遷移通過尋找模型定義和數據庫當前狀態間的不同為upgrade()和downgrade()生成代碼。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 福利免费在线观看 | 欧美成人高清在线 | 黄色网页在线观看 | 91精品国产99久久久久久红楼 | 欧美成人午夜 | 激情福利视频 | 免费看操片 | 精国产品一区二区三区 | 久久网综合| 日本成人高清视频 | 国产一区二区三区欧美 | 日韩毛片免费观看 | 欧美一级片免费在线观看 | 天海翼无删减av三级在线观看 | 中文字幕涩涩久久乱小说 | 欧美在线观看视频网站 | 羞羞草视频 | 国产在线看一区 | 欧美a级一区二区 | 国产三级在线视频观看 | 久久艹逼| 狠狠干b | 91精品国产免费久久 | 一级做a爱片久久 | 欧美人的天堂一区二区三区 | 男女无遮挡羞羞视频 | 国产自在线 | 在线看一区二区三区 | 欧美日本免费一区二区三区 | 美女视频在线观看黄 | 在线播放av片 | 欧美a级毛片| 中文字幕免费一区 | 久久久久久久.comav | 毛片在线看免费 | 国产精品免费视频观看 | 毛片网站网址 | 狠狠干五月天 | 精品一区二区久久久久 | 91精品国产刺激国语对白 | 久久精品无码一区二区三区 |