摘要:聽上去是不是很麻煩更糟糕的是,原先數據庫的的數據也就沒有了。此外,我們還將結合一起使用,簡單來說讓我們可以使用命令行去完成數據庫遷移的操作。
在上一遍文章中,我們增加了兩個模型Questions和Comments,并為Users增加了avatar_path這個字段,然后通過這段代碼更新到數據庫:
with app.test_request_context(): db.drop_all() db.create_all()
因為當使用過db.create_all()之后,再次直接使用db.create_all(),對模型的修改并不會更新到數據庫,我們要使用db.drop_all()先把數據庫中所有的表先刪除掉,然后再db.create_all()一次。聽上去是不是很麻煩?更糟糕的是,原先數據庫的的數據也就沒有了。所以我們不用這種簡單粗暴的方式去更新數據庫結構,而是借助flask-migrate這個專門用于遷移數據庫的工具,它可以在保留數據庫原始數據的情況下,完成模型的更新。此外,我們還將結合flask-script一起使用,簡單來說flask-script讓我們可以使用命令行去完成數據庫遷移的操作。
在項目主文件夾下新建一個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來構建Manager和Migrate兩個類的實例,最后將MigrateCommand的命令加入到manager中。
此時我們假設要更新模型的結構,在models.py的User模型結尾添加一行代碼test = db.Column(db.Integer),然后點擊PyCharm下方的Terminal,自動進入到了虛擬環境的命令行中,輸入python manage.py db init來初始化,這一步主要是建立數據庫遷移相關的文件和文件夾,只是在第一次需要使用。接著依次使用python manage.py db migrate和python manage.py db upgrade,待運行完成,查看users_infor表的結構,結果如下:
可以看到test字段已經添加到表中了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41257.html
摘要:一個用來做數據遷移的擴展,一般都是結合使用,在上一篇文章中我也介紹了這個擴展,需要的小伙伴可以看一下,后續我會將更深層的寫出來。 flask-migrate一個用來做數據遷移的falsk擴展,一般都是結合flask-sqlalchemy使用,在上一篇文章中我也介紹了這個擴展,需要的小伙伴可以看一下,后續我會將flask-sqlalchemy更深層的寫出來。【config.py】 SQL...
摘要:命令需要注冊回調函數來將對象添加到導入列表。創建遷移腳本在,數據庫遷移工作由遷移腳本完成。函數實施數據庫更改,是遷移的一部分,函數則刪除它們。另一方面,自動遷移通過尋找模型定義和數據庫當前狀態間的不同為和生成代碼。 9、數據庫在視圖函數中的使用 在前面章節描述的數據庫操作是可以在視圖函數中直接使用的。示例5-5展示的新版本主頁實現了用戶輸入名字并保存到數據庫中。 示例5-5. he...
摘要:命令需要注冊回調函數來將對象添加到導入列表。創建遷移腳本在,數據庫遷移工作由遷移腳本完成。函數實施數據庫更改,是遷移的一部分,函數則刪除它們。另一方面,自動遷移通過尋找模型定義和數據庫當前狀態間的不同為和生成代碼。 9、數據庫在視圖函數中的使用 在前面章節描述的數據庫操作是可以在視圖函數中直接使用的。示例5-5展示的新版本主頁實現了用戶輸入名字并保存到數據庫中。 示例5-5. he...
閱讀 2574·2021-09-30 09:48
閱讀 2564·2019-08-30 14:10
閱讀 2708·2019-08-29 11:22
閱讀 1837·2019-08-26 13:51
閱讀 2276·2019-08-26 12:02
閱讀 2415·2019-08-23 16:06
閱讀 3548·2019-08-23 14:06
閱讀 1093·2019-08-23 13:56