摘要:聽上去是不是很麻煩更糟糕的是,原先數(shù)據(jù)庫的的數(shù)據(jù)也就沒有了。此外,我們還將結(jié)合一起使用,簡單來說讓我們可以使用命令行去完成數(shù)據(jù)庫遷移的操作。
在上一遍文章中,我們增加了兩個模型Questions和Comments,并為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()
首先導入相關的類,注意模型要全部導入過來,即使代碼中并沒有顯式地使用它們。然后傳入app或db來構(gòu)建Manager和Migrate兩個類的實例,最后將MigrateCommand的命令加入到manager中。
此時我們假設要更新模型的結(jié)構(gòu),在models.py的User模型結(jié)尾添加一行代碼test = db.Column(db.Integer),然后點擊PyCharm下方的Terminal,自動進入到了虛擬環(huán)境的命令行中,輸入python manage.py db init來初始化,這一步主要是建立數(shù)據(jù)庫遷移相關的文件和文件夾,只是在第一次需要使用。接著依次使用python manage.py db migrate和python 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
摘要:一個用來做數(shù)據(jù)遷移的擴展,一般都是結(jié)合使用,在上一篇文章中我也介紹了這個擴展,需要的小伙伴可以看一下,后續(xù)我會將更深層的寫出來。 flask-migrate一個用來做數(shù)據(jù)遷移的falsk擴展,一般都是結(jié)合flask-sqlalchemy使用,在上一篇文章中我也介紹了這個擴展,需要的小伙伴可以看一下,后續(xù)我會將flask-sqlalchemy更深層的寫出來。【config.py】 SQL...
摘要:命令需要注冊回調(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...
摘要:命令需要注冊回調(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...
閱讀 2582·2021-09-30 09:48
閱讀 2573·2019-08-30 14:10
閱讀 2713·2019-08-29 11:22
閱讀 1843·2019-08-26 13:51
閱讀 2282·2019-08-26 12:02
閱讀 2421·2019-08-23 16:06
閱讀 3560·2019-08-23 14:06
閱讀 1097·2019-08-23 13:56