一、內嵌ORM框架
概念:對象關係映射,即通過創建模型類,對象與數據庫的映射、關聯。
例如:要創建個模型類映射數據庫圖書表
二、模型類生成表
1)生成遷移文件
命令:python manage.py makemigrations
2)執行遷移生成表
命令:python manage.py migrate
生成表後就會默認到應用跟項目目錄同級下生成db.sqlite3文件,這個文件想要打開可以安裝sqliteman
進入虛擬環境,執行命令:sudo apt-get install sqliteman
安裝完,執行sqliteman可以進入工具進行打開該文件
進入項目終端:python manage.py shell
三、操作增刪改查
1)新增:導入某應用裏的對應函數,定義對象,以實例.屬性進行賦值,注意這裏寫的屬性要與模型類中編輯的保持一致,最後保存新增。
2)查詢:通過函數對象與括號裏帶的條件獲得數據對象,通過對象進行打印,還可以通過BookInfo.objects.all()查詢到所有數據
3)修改:直接對對象屬性進行賦值,保存到數據庫。
4)刪除:通過delete方法對保存在對象裏的數據進行刪除。
四、模型類關係和關係查詢
上面所提到的已經創建了個圖書的模型類,準備創建一個英雄的模型類,圖書與英雄是一對多的關係,一本圖書可以包含很多個英雄,每個英雄對應保存到一本圖書中,所以新建了個英雄的模型類,添加了個外鍵屬性指向圖書類,如下圖:
拓展知識:
以上是對象一對多時定義的關係屬性,使用函數ForeignKey;
當出現對象多對多時,可以在兩者中任意一個類上面都可以,使用函數ManyToManyField;
當出現對象一對一時,可以在兩者中任意一個類上面都可以,使用函數OneToOneField。建好模型類後記得生成遷移文件,執行遷移生成表,在插入英雄表數據時,將圖書對象賦值給英雄對象的hbook屬性,增刪改查基本與前面提到的相同。
如何通過表關聯查詢數據:
1)如果想要通過英雄查詢相關聯的圖書的標題名字,公式為
英雄對象.外鍵屬性.圖書標題屬性,例如:h.hbook.btitle
2)如果想要通過圖書查詢相關聯的英雄信息,公式為
圖書對象.英雄函數名小寫_set.all(),例如:b.heroinfo_set.all()
兩者關係操作圖如下: