使用Flask-SQLAlchemy管理數(shù)據(jù)庫

*注:后半部分介紹使用Flask_migrate實現(xiàn)數(shù)據(jù)庫遷移

1、安裝Flask-SQLAlchemy

在pycharm命令行使用pip命令安裝Flask-SQLAlchemy。


圖1

2、配置數(shù)據(jù)庫

在flask_sql.py文件里配置數(shù)據(jù)庫。

圖2 配置數(shù)據(jù)庫

3、定義數(shù)據(jù)庫模型并確定關(guān)聯(lián)關(guān)系

以Role表和User表為例,確定兩個表之間的對應(yīng)關(guān)系(一對一,一對多,多對一),定義表的時候要加入對應(yīng)的主外鍵關(guān)系,在這里,Role和User表為一對多的關(guān)系。

圖3? ? 定義?Role?和?User?模型

4、集成Python Shell

為了避免每次啟動shell對話都要進(jìn)行導(dǎo)入數(shù)據(jù)庫實例和模型,我們可以做些配置,讓?flask shell?命令自動導(dǎo)入這些對象。

圖4 添加一個shell上下文

5、創(chuàng)建遷移數(shù)據(jù)庫

首先,要在虛擬環(huán)境中安裝 Flask-Migrate:


圖6?

在flask_sql.py文件中導(dǎo)入:


圖7

為了開放數(shù)據(jù)庫遷移相關(guān)的命令,F(xiàn)lask-Migrate 添加了?flask db?命令和幾個子命令。在新項目中可以使用?init?子命令添加數(shù)據(jù)庫遷移支持:(init 執(zhí)行一次就可以)

圖8

6、創(chuàng)建遷移腳本

在 Alembic 中,數(shù)據(jù)庫遷移用遷移腳本表示。腳本中有兩個函數(shù),分別是?upgrade()?和?downgrade()。upgrade()?函數(shù)把遷移中的改動應(yīng)用到數(shù)據(jù)庫中,downgrade()?函數(shù)則將改動刪除。Alembic 具有添加和刪除改動的能力,意味著數(shù)據(jù)庫可重設(shè)到修改歷史的任意一點。

使用 Flask-Migrate 管理數(shù)據(jù)庫模式變化的步驟如下。

(1) 對模型類做必要的修改。

(2) 執(zhí)行?flask db migrate?命令,自動創(chuàng)建一個遷移腳本。

(3) 檢查自動生成的腳本,根據(jù)對模型的實際改動進(jìn)行調(diào)整。

(4) 把遷移腳本納入版本控制。

(5) 執(zhí)行?flask db upgrade?命令,把遷移應(yīng)用到數(shù)據(jù)庫中。

flask db migrate?子命令用于自動創(chuàng)建遷移腳本:


圖9

-m '文件名'? ?*注:為了便于區(qū)分遷移腳本 ,建議每次起有意義的名字。

7、更新數(shù)據(jù)庫

檢查并修正好遷移腳本之后,執(zhí)行?flask db upgrade?命令,把遷移應(yīng)用到數(shù)據(jù)庫中,這時數(shù)據(jù)庫中才有表。

圖10

8、更新修改

給User表增加一列age屬性,接著執(zhí)行6、7操作,則修改完成(刪除暫時有問題)

圖11

9、利用命令行操作插入列


圖12


圖13

別忘了commit()


圖14

修改行


圖15

刪除行


圖16
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容