通過建立虛拟flask環境來遷移資料庫。
<code>virtualenvwrapper</code>庫中有個<code>mkvirtualenv</code>函數,用來建立虛拟環境(make virtual envirement)。使用指令
建立一個名為<code>flask-tutorial</code>的虛拟環境,如圖
可利用<code>workon flask-tutorial</code>指令激活這個虛拟環境。使用<code>deactivate</code>退出這個虛拟環境。在預設條件下,虛拟環境不包含任何庫。是以需要重新安裝。
接着通過<code>pip freeze</code>檢視庫,将會看到:
使用<code>pip freeze > requirements.txt</code>來生成requirements.txt這個檔案。注意删除第一行的<code>-f /usr/share/pip-wheels</code>再git。
使用<code>pip install Flask-Migrate</code>安裝這個擴充。
在flask_app.py添加以上代碼啟用Migrate。
指令:
然後建立一個新的資料庫,替換掉flask_app.py裡面的舊資料庫。儲存但不要運作。指令行輸入<code>flask db migrate</code>之後,再将剛剛的改動改回去。<code>flask db migrate</code>會生成了一個.py的檔案,這個檔案是用來修改comments資料庫的。如圖
接着執行指令行<code>flask db stamp head</code>為comments資料庫添加“版本号”。
去資料庫console執行:
結果如圖:
發現此時發生變化的還有原本的comments資料庫:增加了<code>alembic_version</code>,這是Flask-Migrate用來完成工作的底層庫。其中version_num列隻有一行十六進制數字,這和執行
<code>flask db stamp head</code>得到的數字是一樣的,可以了解為Flask_Migrate為comments資料庫添加的“版本号”。
前面的工作做好了,下面就可以在flask_app.py 的comments class裡添加<code>posted = db.Column(db.DateTime, default=datetime.now)</code>。接着依次輸入以下指令行:
1.<code>flask db migrate</code>生成了更新資料庫所需的Python檔案。如圖:
注意到新檔案裡增加了<code>upgrade()</code>函數用來增加posted列。
2.<code>flask db upgrade</code>執行上述檔案,對資料庫進行添加列。
這時候檢視MySQL,發現posted已經被添加了。