亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

7.ORM與SQLAlchemy (3) - flask-migrate數(shù)據(jù)庫(kù)遷移

wind3110991 / 2522人閱讀

摘要:聽上去是不是很麻煩更糟糕的是,原先數(shù)據(jù)庫(kù)的的數(shù)據(jù)也就沒有了。此外,我們還將結(jié)合一起使用,簡(jiǎn)單來(lái)說讓我們可以使用命令行去完成數(shù)據(jù)庫(kù)遷移的操作。

在上一遍文章中,我們?cè)黾恿藘蓚€(gè)模型QuestionsComments,并為Users增加了avatar_path這個(gè)字段,然后通過這段代碼更新到數(shù)據(jù)庫(kù):

with app.test_request_context():
    db.drop_all()
    db.create_all()

因?yàn)楫?dāng)使用過db.create_all()之后,再次直接使用db.create_all(),對(duì)模型的修改并不會(huì)更新到數(shù)據(jù)庫(kù),我們要使用db.drop_all()先把數(shù)據(jù)庫(kù)中所有的表先刪除掉,然后再db.create_all()一次。聽上去是不是很麻煩?更糟糕的是,原先數(shù)據(jù)庫(kù)的的數(shù)據(jù)也就沒有了。所以我們不用這種簡(jiǎn)單粗暴的方式去更新數(shù)據(jù)庫(kù)結(jié)構(gòu),而是借助flask-migrate這個(gè)專門用于遷移數(shù)據(jù)庫(kù)的工具,它可以在保留數(shù)據(jù)庫(kù)原始數(shù)據(jù)的情況下,完成模型的更新。此外,我們還將結(jié)合flask-script一起使用,簡(jiǎn)單來(lái)說flask-script讓我們可以使用命令行去完成數(shù)據(jù)庫(kù)遷移的操作。


在項(xiàng)目主文件夾下新建一個(gè)manage.py,代碼如下:

from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from HarpQA import app, db
from models import Users, Questions, Comments

manager = Manager(app)

migrate = Migrate(app, db)

manager.add_command("db", MigrateCommand)


if __name__ == "__main__":
    manager.run()

首先導(dǎo)入相關(guān)的類,注意模型要全部導(dǎo)入過來(lái),即使代碼中并沒有顯式地使用它們。然后傳入appdb來(lái)構(gòu)建ManagerMigrate兩個(gè)類的實(shí)例,最后將MigrateCommand的命令加入到manager中。


此時(shí)我們假設(shè)要更新模型的結(jié)構(gòu),在models.pyUser模型結(jié)尾添加一行代碼test = db.Column(db.Integer),然后點(diǎn)擊PyCharm下方的Terminal,自動(dòng)進(jìn)入到了虛擬環(huán)境的命令行中,輸入python manage.py db init來(lái)初始化,這一步主要是建立數(shù)據(jù)庫(kù)遷移相關(guān)的文件和文件夾,只是在第一次需要使用。接著依次使用python manage.py db migratepython manage.py db upgrade,待運(yùn)行完成,查看users_infor表的結(jié)構(gòu),結(jié)果如下:

可以看到test字段已經(jīng)添加到表中了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/41257.html

相關(guān)文章

  • Flask之?dāng)U展flask-migrate

    摘要:一個(gè)用來(lái)做數(shù)據(jù)遷移的擴(kuò)展,一般都是結(jié)合使用,在上一篇文章中我也介紹了這個(gè)擴(kuò)展,需要的小伙伴可以看一下,后續(xù)我會(huì)將更深層的寫出來(lái)。 flask-migrate一個(gè)用來(lái)做數(shù)據(jù)遷移的falsk擴(kuò)展,一般都是結(jié)合flask-sqlalchemy使用,在上一篇文章中我也介紹了這個(gè)擴(kuò)展,需要的小伙伴可以看一下,后續(xù)我會(huì)將flask-sqlalchemy更深層的寫出來(lái)?!綾onfig.py】 SQL...

    Snailclimb 評(píng)論0 收藏0
  • Flask Web Development —— 數(shù)據(jù)庫(kù)(下)

    摘要:命令需要注冊(cè)回調(diào)函數(shù)來(lái)將對(duì)象添加到導(dǎo)入列表。創(chuàng)建遷移腳本在,數(shù)據(jù)庫(kù)遷移工作由遷移腳本完成。函數(shù)實(shí)施數(shù)據(jù)庫(kù)更改,是遷移的一部分,函數(shù)則刪除它們。另一方面,自動(dòng)遷移通過尋找模型定義和數(shù)據(jù)庫(kù)當(dāng)前狀態(tài)間的不同為和生成代碼。 9、數(shù)據(jù)庫(kù)在視圖函數(shù)中的使用 在前面章節(jié)描述的數(shù)據(jù)庫(kù)操作是可以在視圖函數(shù)中直接使用的。示例5-5展示的新版本主頁(yè)實(shí)現(xiàn)了用戶輸入名字并保存到數(shù)據(jù)庫(kù)中。 示例5-5. he...

    jone5679 評(píng)論0 收藏0
  • Flask Web Development —— 數(shù)據(jù)庫(kù)(下)

    摘要:命令需要注冊(cè)回調(diào)函數(shù)來(lái)將對(duì)象添加到導(dǎo)入列表。創(chuàng)建遷移腳本在,數(shù)據(jù)庫(kù)遷移工作由遷移腳本完成。函數(shù)實(shí)施數(shù)據(jù)庫(kù)更改,是遷移的一部分,函數(shù)則刪除它們。另一方面,自動(dòng)遷移通過尋找模型定義和數(shù)據(jù)庫(kù)當(dāng)前狀態(tài)間的不同為和生成代碼。 9、數(shù)據(jù)庫(kù)在視圖函數(shù)中的使用 在前面章節(jié)描述的數(shù)據(jù)庫(kù)操作是可以在視圖函數(shù)中直接使用的。示例5-5展示的新版本主頁(yè)實(shí)現(xiàn)了用戶輸入名字并保存到數(shù)據(jù)庫(kù)中。 示例5-5. he...

    fasss 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<