flask中的資料庫遷移

2021-08-20 07:11:42 字數 4065 閱讀 4460

在開發的過程中,需要修改資料庫的模型,而且需要在修改之後更新資料庫,最直接就是刪除舊表,但是會丟失資料。所有最好的方式就是資料庫遷移。它可以追蹤資料庫模型的變化,然後把變動應用到資料庫中。

在flask中可以使用flask-migrate擴充套件,來實現資料遷移。並且整合到flask-script中,所有的操作通過命令就能完成。

flask-migrate提供了乙個migratecommand類,可以附加到flask-script的manage物件上。

from

flask

import

flask

from

flask_sqlalchemy

import

sqlalchemy

from

flask_migrate

import

migratecommand, migrate

from

flask_script

import

manager

class

config(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)

# 定義模型

class

role(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)

class

user(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命令

python

manage.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 ...