最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

2、Flask-Migrate的使用

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

from flask_migrate import Migrate

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

···

db = SQLAlchemy(app)

migrate = Migrate(app, db)

實(shí)例化 Migrate 類,需要傳入 Flask 實(shí)例 app SQLAlchemy創(chuàng)建的實(shí)例 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)建一個(gè)遷移環(huán)境:

flask db init

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

2.1.2 生成遷移腳本

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

flask db migrate -m "create_table"

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

遷移腳本內(nèi)有兩個(gè)函數(shù):

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

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

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

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

如果之后我們需要改動 user 表中的字段,比如添加一個(gè)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、總結(jié)

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

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

相關(guān)文章

  • Python中的self用法詳解

    Python中的self用法詳解

    在本篇文章里小編給大家整理的是關(guān)于Python中的self用法以及實(shí)例內(nèi)容,需要的朋友們參考下。
    2019-08-08
  • pytorch GAN偽造手寫體mnist數(shù)據(jù)集方式

    pytorch GAN偽造手寫體mnist數(shù)據(jù)集方式

    今天小編就為大家分享一篇pytorch GAN偽造手寫體mnist數(shù)據(jù)集方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python中每次處理一個(gè)字符的5種方法

    Python中每次處理一個(gè)字符的5種方法

    這篇文章主要介紹了Python中每次處理一個(gè)字符的5種方法,即把字符串分割成字符數(shù)組或把字符串切割成單獨(dú)字符的方法,需要的朋友可以參考下
    2015-05-05
  • Python使用Selenium實(shí)現(xiàn)按文本查找元素

    Python使用Selenium實(shí)現(xiàn)按文本查找元素

    本文我們將通過示例為大家詳細(xì)介紹如何在Python中使用selenium通過文本查找元素的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2023-11-11
  • Python簡單的GUI程序示例詳解

    Python簡單的GUI程序示例詳解

    這篇文章主要為大家詳細(xì)介紹了Python簡單的GUI程序示例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Python時(shí)間操作之pytz模塊使用詳解

    Python時(shí)間操作之pytz模塊使用詳解

    在學(xué)習(xí)Python過程中,我們已經(jīng)了解了一些關(guān)于時(shí)間操作的庫,如:Python內(nèi)置庫:time,datatime和第三方庫:dateutil,pytz等。本文將詳細(xì)講講pytz模塊的使用,需要的可以參考一下
    2022-06-06
  • python3 判斷列表是一個(gè)空列表的方法

    python3 判斷列表是一個(gè)空列表的方法

    今天小編就為大家分享一篇python3 判斷列表是一個(gè)空列表的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python實(shí)現(xiàn)將MySQL數(shù)據(jù)庫表中的數(shù)據(jù)導(dǎo)出生成csv格式文件的方法

    Python實(shí)現(xiàn)將MySQL數(shù)據(jù)庫表中的數(shù)據(jù)導(dǎo)出生成csv格式文件的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)將MySQL數(shù)據(jù)庫表中的數(shù)據(jù)導(dǎo)出生成csv格式文件的方法,涉及Python針對mysql數(shù)據(jù)庫的連接、查詢、csv格式數(shù)據(jù)文件的生成等相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • python Paramiko使用示例

    python Paramiko使用示例

    這篇文章主要介紹了python Paramiko的使用示例,幫助大家遠(yuǎn)程控制類 UNIX 系統(tǒng),感興趣的朋友可以了解下。
    2020-09-09
  • Python sorted排序方法如何實(shí)現(xiàn)

    Python sorted排序方法如何實(shí)現(xiàn)

    這篇文章主要介紹了Python sorted排序方法如何實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評論

固始县| 淅川县| 大化| 冀州市| 旬邑县| 华阴市| 绩溪县| 姚安县| 岚皋县| 那曲县| 德江县| 景宁| 安阳市| 乐东| 潞西市| 随州市| 新安县| 共和县| 岑溪市| 遂溪县| 田东县| 东兴市| 双辽市| 久治县| 茌平县| 崇义县| 共和县| 黑龙江省| 吴桥县| 二手房| 通州市| 腾冲县| 开原市| 牡丹江市| 昌平区| 宁城县| 三门县| 瑞丽市| 都江堰市| 敦化市| 临沂市|