国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

wind3110991 / 2465人閱讀

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

在上一遍文章中,我們增加了兩個模型QuestionsComments,并為Users增加了avatar_path這個字段,然后通過這段代碼更新到數(shù)據(jù)庫:

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

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


在項目主文件夾下新建一個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()

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


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

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

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/41257.html

相關文章

  • Flask之擴展flask-migrate

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

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

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

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

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

    fasss 評論0 收藏0

發(fā)表評論

0條評論

wind3110991

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<