1. 程式人生 > >Django基礎-----ORM簡介、資料庫中資料操作及簡單的一對多模型

Django基礎-----ORM簡介、資料庫中資料操作及簡單的一對多模型

一:ORM
物件關係對映,是一種程式技術,用於實現面向物件程式語言裡不同型別系統的資料之間的轉換 。從效果上說,它其實是建立了一個可在程式語言裡使用的–“虛擬物件資料庫”。
在ORM框架中,它幫我們把類和資料表進行了一個對映,可以讓我們通過類和類物件就能操作它所對應的表格中的資料。ORM框架還有一個功能,它可以根據我們設計的類自動幫我們生成資料庫中的表格,省去了我們自己建表的過程。
django中內嵌了ORM框架,不需要直接面向資料庫程式設計,而是定義模型類,通過模型類和物件完成資料表的增刪改查操作。

使用django進行資料庫開發的步驟如下:
1.在models.py中定義模型類
2.遷移
3.通過類和物件完成資料增刪改查操作

二:定義模型類
模型類定義在models.py檔案中,繼承自models.Model類。
(不需要定義主鍵列,在生成時會自動新增,並且值為自動增長。)

三:遷移
遷移由兩步完成:
1.生成遷移檔案:根據模型類生成建立表的遷移檔案。
2.執行遷移:根據第一步生成的遷移檔案在資料庫中建立表。

生成遷移檔案命令 python manage.py makemigrations
執行生成遷移檔案命令後,會在應用booktest目錄下的migrations目錄中生成遷移檔案
注:Django框架根據我們設計的模型類生成了遷移檔案,在遷移檔案中我們可以看到fields列表中每一個元素跟BookInfo類屬性名以及屬性的型別是一致的。同時我們發現多了一個id項,這一項是Django框架幫我們自動生成的,在建立表的時候id就會作為對應表的主鍵列,並且主鍵列自動增長。
執行遷移命令 python

manage.py migrate
當執行遷移命令後,Django框架會讀取遷移檔案自動幫我們在資料庫中生成對應的表格。
Django預設採用sqlite3資料庫,上圖中的db.sqlite3就是Django框架幫我們自動生成的資料庫檔案。 sqlite3是一個很小的資料庫,通常用在手機中,它跟mysql一樣,我們也可以通過sql語句來操作它。
下面使用sqliteman開啟db.sqlite3檔案進行檢視。如果沒有安裝sqliteman,需要先使用如下命令進行安裝。
sudo apt-get install sqliteman

具體開啟步驟:

在這裡插入圖片描述

四:資料操作
完成資料表的遷移之後,下面就可以通過進入專案的shell,進行簡單的API操作。如果需要退出專案,可以使用ctrl+d快捷鍵或輸入quit()。
進入專案shell的命令:(增刪改查)
python

manage.py shell
新建圖書物件:
b=BookInfo()
b.btitle=“射鵰英雄傳”
from datetime import date
b.bpub_date=date(1991,1,31)
b.save()
查詢所有圖書資訊:
BookInfo.objects.all()
修改圖書資訊:
b.bpub_date=date(2017,1,1)
b.save()
b.bpub_date
刪除圖書資訊:
b.delete()

五:物件的關聯操作
在兩個表格中分別建立物件a,b,然後在其中物件a中設定一個屬性與物件b相關聯,產生關聯操作。物件a所在的表稱為主表,物件b所在的表稱為從表。
(主從表:主從表,從表資料依賴於主表,一般最後查詢資料時把主表與從表進行關聯查詢。主表可用於儲存主要資訊,如客戶資料(客戶編號,客戶名稱,客戶公司,客戶單位等),從表用來儲存客戶擴充套件資訊(客戶訂單資訊,客戶地址資訊,客戶聯絡方式資訊等)。)

建立一個BookInfo物件
b=BookInfo()
b.btitle=‘abc’
b.bpub_date=date(2017,1,1)
b.save()
建立一個HeroInfo物件
h=HeroInfo()
h.hname=‘a1’
h.hgender=False
h.hcomment=‘he is a boy’
h.hbook=b
h.save()

圖書與英雄是一對多的關係,django中提供了關聯的操作方式。
獲得關聯集合:返回當前book物件的所有hero。
b.heroinfo_set.all()