欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flask?數(shù)據(jù)庫遷移詳情

 更新時間:2022年01月24日 13:25:07   作者:tigeriaf  
本文給大家分享的是?Flask?數(shù)據(jù)庫遷移詳情,db.create_all()不會重新創(chuàng)建表或是更新表,需要先使用db.drop_all()刪除數(shù)據(jù)庫中所有的表之后再調用db.create_all()才能重新創(chuàng)建表,但是這樣的話,原來表中的數(shù)據(jù)就都被刪除了,這肯定是不行的,這時就出現(xiàn)了數(shù)據(jù)庫遷移的概念

1、使用 Flask-Migrate 實現(xiàn)數(shù)據(jù)庫遷移

db.create_all()不會重新創(chuàng)建表或是更新表,需要先使用db.drop_all()刪除數(shù)據(jù)庫中所有的表之后再調用db.create_all()才能重新創(chuàng)建表,但是這樣的話,原來表中的數(shù)據(jù)就都被刪除了,這肯定是不行的,這時就出現(xiàn)了數(shù)據(jù)庫遷移的概念。

在開發(fā)過程中,隨著需求的變化,有可能需要添加或修改表的一些字段,但是原表中的數(shù)據(jù)不能刪除,此時就需要創(chuàng)建新表,并將舊表中的數(shù)據(jù)遷移至新表中,Flask-Migrate這個擴展就可以在不破壞數(shù)據(jù)的情況下更新數(shù)據(jù)庫表的結構,并完成數(shù)據(jù)從舊表到新表的遷移。

2、Flask-Migrate的使用

可以使用pip install flask-migrate進行安裝。在程序中,我們實例化 Flask_Migrate 提供的 Migrate 類,進行初始化操作。

from flask_migrate import Migrate

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

···

db = SQLAlchemy(app)

migrate = Migrate(app, db)

實例化 Migrate 類,需要傳入 Flask 實例 app SQLAlchemy創(chuàng)建的實例 db。

2.1 數(shù)據(jù)庫的遷移過程

先定義 User 模型類。

class User(db.Model):

    __tablename__ = 'user'

    id = db.Column(db.Integer, primary_key=True)

    user_name = db.Column(db.String)

    password = db.Column(db.String)

2.1.1 創(chuàng)建遷移環(huán)境

在開始遷移數(shù)據(jù)之前,需要先使用下面的命令創(chuàng)建一個遷移環(huán)境:

flask db init

遷移環(huán)境只需創(chuàng)建一次,創(chuàng)建后會在項目根目錄下生成一個 migrations 目錄,其中包含了自動生成的配置文件和遷移版本目錄。

2.1.2 生成遷移腳本

使用如下命令自動生成遷移腳本:

flask db migrate -m "create_table"

-m 選項添加備注信息,執(zhí)行后遷移版本目錄生成了遷移腳本。

遷移腳本內有兩個函數(shù):

  • upgrade():把遷移中的改動應用到數(shù)據(jù)庫中
  • downgrade():將改動撤銷

自動生成的遷移腳本會根據(jù)模型定義和數(shù)據(jù)庫當前狀態(tài)的差異,生成upgrade()downgrade()函數(shù)的內容,不一定完全正確,有必要再進行檢查一下。

2.1.3 更新數(shù)據(jù)庫

生成了遷移腳本后,使用flask db upgrade命令可完成對數(shù)據(jù)庫的更新。執(zhí)行后即可生成數(shù)據(jù)庫及表。

如果之后我們需要改動 user 表中的字段,比如添加一個mobile字段,我們只需在 User 模型類中添加該屬性,之后執(zhí)行flask db migrate -m '注釋'和flask db upgrade命令即可。

class User(db.Model):

    __tablename__ = 'user'

    id = db.Column(db.Integer, primary_key=True)

    user_name = db.Column(db.String)

    password = db.Column(db.String)

    mobile = db.Column(db.String)

如果想要回滾遷移的話,可以執(zhí)行flask db downgrade命令。

3、總結

這里只是介紹如何在 Flask 中進行數(shù)據(jù)庫遷移,關于在生產環(huán)境下,是否需要使用遷移工具或者使用何種工具進行遷移,這里不做討論,至于我的話,在生產環(huán)境中,我沒有使用過Flask-Migrate,而是選擇編寫 SQL 腳本來處理數(shù)據(jù)庫及表的更新或改動,我覺得這樣更不容易出錯,其實各有各的好處,看自己選擇。

到此這篇關于 Flask 數(shù)據(jù)庫遷移詳情的文章就介紹到這了,更多相關 Flask 數(shù)據(jù)庫遷移內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python之lambda表達式與sort函數(shù)中的key用法

    python之lambda表達式與sort函數(shù)中的key用法

    這篇文章主要介紹了python之lambda表達式與sort函數(shù)中的key用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python連接讀寫操作redis的完整代碼實例

    python連接讀寫操作redis的完整代碼實例

    這篇文章主要介紹了python連接讀寫操作redis的完整代碼實例,包括redis連接與讀寫操作,redis-sentinel哨兵模式下Python操作redis,redis-cluster(集群)模式下Python操作redis,需要的朋友可以參考下
    2023-01-01
  • python實戰(zhàn)小游戲之考驗記憶力

    python實戰(zhàn)小游戲之考驗記憶力

    本篇文章介紹了用python編寫的曾經風靡的考驗記憶力的小游戲,詳細介紹了整個思路和過程以及代碼,通讀本篇對大家的學習或工作具有一定的價值,需要的朋友可以參考下
    2021-09-09
  • 詳解pytorch 0.4.0遷移指南

    詳解pytorch 0.4.0遷移指南

    這篇文章主要介紹了詳解pytorch 0.4.0遷移指南,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • 使用python批量轉換文件編碼為UTF-8的實現(xiàn)

    使用python批量轉換文件編碼為UTF-8的實現(xiàn)

    這篇文章主要介紹了使用python批量轉換文件編碼為UTF-8的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • Python 從一個文件中調用另一個文件的類方法

    Python 從一個文件中調用另一個文件的類方法

    今天小編就為大家分享一篇Python 從一個文件中調用另一個文件的類方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • nginx+uwsgi+django環(huán)境搭建的方法步驟

    nginx+uwsgi+django環(huán)境搭建的方法步驟

    這篇文章主要介紹了nginx+uwsgi+django環(huán)境搭建的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • 超實用的 10 段 Python 案例

    超實用的 10 段 Python 案例

    Python是目前最流行的語言之一,它在數(shù)據(jù)科學、機器學習、web開發(fā)、腳本編寫、自動化方面被許多人廣泛使用。它的簡單和易用性造就了它如此流行的原因。今天這篇文章就給大家分享 10 段超級有用的 Python 案例,需要的朋友可以參考一下
    2021-09-09
  • 解決Pytorch 訓練與測試時爆顯存(out of memory)的問題

    解決Pytorch 訓練與測試時爆顯存(out of memory)的問題

    今天小編就為大家分享一篇解決Pytorch 訓練與測試時爆顯存(out of memory)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python爬蟲后獲取重定向url的兩種方法

    Python爬蟲后獲取重定向url的兩種方法

    這篇文章主要介紹了Python爬蟲后獲取重定向url的兩種方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01

最新評論