在開發的過程中,需要修改資料庫的模型,而且需要在修改之後更新資料庫,最直接就是刪除舊表,但是會丟失資料。所有最好的方式就是資料庫遷移。它可以追蹤資料庫模型的變化,然後把變動應用到資料庫中。
在flask中可以使用flask-migrate擴充套件,來實現資料遷移。並且整合到flask-script中,所有的操作通過命令就能完成。
flask-migrate提供了乙個migratecommand類,可以附加到flask-script的manage物件上。
fromflask
import
flask
fromflask_sqlalchemy
import
sqlalchemy
fromflask_migrate
import
migratecommand, migrate
fromflask_script
import
manager
classconfig(object):
debug = true
sqlalchemy_database_uri = 'mysql://root:wjm@localhost/py9'
sqlalchemy_track_modifications = false
# 建立migrate例項,第乙個引數是flask的例項,第二個是sqlalchemy的資料庫例項
# manage是flask-script的例項,這條語句在flask_script中新增了乙個db命令
manage.add_command('db',migratecommand)
# 定義模型
classrole(db.model):
# 定義表名
__tablename__ = 'roles2'
# 定義字段
id = db.column(db.integer,primary_key=true)
name = db.column(db.string(32),unique=true)
# repr顯示乙個可讀字串
def__repr__(self):
return'name:'.format(self.name)
classuser(db.model):
# 定義表名
__tablename__ = 'users2'
# 定義字段
id = db.column(db.integer,primary_key=true)
name = db.column(db.string(32), unique=true, index=true)
# 設定外來鍵
role_id = db.column(db.integer, db.foreignkey('roles2_id'))
def__repr__(self):
return'user:'.format(self.name)
if__name__ == '__main__':
manage.run()
在終端執行下面的命令。會建立migrations資料夾,所有的遷移檔案都放在裡面。
建立自動遷移指令碼:
upgrade():函式把遷移中的改動應用到資料庫中。
downgrate():函式則將改動刪除。
自動建立的遷移指令碼會
根據模型定義和資料庫當前狀態的差異,生成upgrade()和downgrade()函式的內容。
對比不一定完全正確,有可能會遺漏一些細節,需要進行檢查。
python注意:這裡有可能出現著個錯誤manage.py
dbmigrade-m
'initial migration'
只需要把-m給刪掉就可以了,引數太多沒辦法
發現有不同,此時更新資料庫
更新完之後,在資料庫會出現乙個表
versions每遷移一次裡面都會生成乙個檔案。
回退版本:先通過history命令來找到版本號,然後傳給downgrade命令
pythonmanage.py
dbhistory
python實際操作順序:manage.py
dbdowngrade
版本號
1.先建立python檔案 manage.py,內容為
2.python manage.py db init
3.python manage.py db migrate -m '版本號(注釋)『
4.python manage.py db upgrade
5.根據需求修改模型
6.python 檔案 db migrate -m"新版本名(注釋)"
7.python 檔案 db upgrade 然後觀察表結構
8.若返回版本,則利用 python 檔案 db history檢視版本號
9.python 檔案 db downgrade(upgrade) 版本號
flask中資料庫的遷移
coding utf 8 from flask import flask from flask script import manager from flask sqlalchemy import sqlalchemy from flask migrate import migratecommand...
Flask資料庫遷移
在開發過程中,需要修改資料庫模型,且還要在修改之後更新資料庫。最直接的 式就是刪除 舊表,但這樣會丟失資料。更好的解決辦法是使 資料庫遷移框架,它可以追蹤資料庫模式的變化,然後把變動應 到資料 庫中。在flask中可以使 flask migrate擴充套件,來實現資料遷移。並且整合到flask sc...
flask資料庫遷移
1.pip3 install flask script 安裝專案管理包 flask script 2.pip3 install flask migrate 安裝資料遷移包 flask migrate 1.匯入包 from flask script import manager from flask ...