Django orm的基本使用方法之一

2022-09-12 23:18:25 字數 4112 閱讀 7575

orm()d:

把物件導向中的類和資料庫表一一對應起來,

e:通過操作類和物件,對資料庫表實現資料的增刪改查等操作,而不需要寫sql語句

u:①使用django進行資料庫開發步驟:

2. 生成遷移檔案: python manage.d呃py makemigrations

3. 執行遷移生成資料庫表(預設使用sqlite3資料庫,生成的資料庫名為:db.sqlite3): python manage.py migrate

4. 安裝sqliteman:sudo apt-get install sqliteman;啟動:sqliteman

5. 通過模型類和物件,對資料進行增刪改查

通過orm對資料庫增刪改:

可以進入互動模式執行**:python manage.py shell

建立模型類物件:a = 模型類()

在則新增資料,id存在則修改資料,如id =none,則id=上一次id+1

刪除:a.delete()  --------不指定id即刪除本次id

字段屬性(即資料表中對應的字段):

屬性名 = models.欄位型別(字段限制)  ------屬性名不可以用python關鍵字及雙下劃線

字段型別:

字段型別

型別含義

描述autofield

自動增長的整數字段

通常不需要指定,django會自動建立屬性名為id的自動增長屬性

booleanfield

布林字段

值為true或false

nullbooleanfield

空布林字段

支援null、true、false三種值。

字串字段

必須指定引數(max_length=字元個數)

textfield

大文字字段

一般超過4000個字元時使用

datefield,timefield,

datetimefield

日期,時間,

日期時間字段

可指定引數auto_now=false(true:儲存物件,django自動為該屬性賦值,預設為false);auto_now_add(true:第一次建立,django自動為該屬性賦值,預設為false)

integerfield

整數字段

從 -2147483648 到 2147483647 範圍內的值是合法的

decimalfield

十進位制浮點數

必須指定引數(max_digit=總位數,decimal_places=小數後位數)

floatfield

浮點數用python中的float來表示,有誤差

filefield

上傳檔案字段

imagefield

字段繼承於filefield,對上傳的內容進行校驗,確保是有效的

選項預設值

描述是否要重新遷移修改表結構

null

false

true:資料庫中欄位允許為空

是unique

false

true:值必須唯一

是db_column

屬性名稱

欄位名,如果未指定,則使用屬性的名稱

是db_index

false

true:為此字段建立索引。 檢視索引:show index from 表名

是primary_key

false

true:則該字段會成為模型的主鍵字段,一般作為autofield的選項使用

是default

為字段設定預設值

否blank

false

true:html頁面表單驗證時欄位允許為空

否objects(模型管理器)

d:每個模型類都有乙個objects的類屬性,由django欄位生成

e:查詢資料庫的資料或對資料進行操作處理

u:objects中的方法:

objects管理器中的方法

返回型別

作用模型類.objects.get()

模型物件

如果查詢不到資料,則報:doesnotexist

模型類.objects.filter()

queryset

返回滿足條件的物件

模型類.objects.all()

queryset

返回所有的物件

模型類.objects.exclude()

queryset

返回不滿條件的物件

模型類.objects.order_by()

queryset

對查詢結果集進行排序

模型類.objects.aggregate()

字典,例如:

進行聚合操作

sum, count, max, min, **g

模型類.objects.count()

數字返回查詢集中物件的數目

d:模型管理器objects的一種查詢方法

e:實現條件查詢,返回queryset物件,包含了所滿足條件的資料

u:模型類.objects.filter(模型類屬性名__條件名 = 值)

filter條件:

條件含義

注釋exact

判等可以省略

contains;

endswith;

startswith

模糊查詢

包含;以什麼開頭;

結尾isnull

空查詢是否為空,是返回true,否返回false

in範圍查詢

在....內

gt,lt,gte,lte

比較查詢

大於,小於,大於等於,小於等於

year, date

日期查詢

年,日期

方法作用

示例f物件

引用某字段的值,對比表中的兩個字段

查詢語文分數大於數學分數的學生

成績表.objects.filter(語文__gt=f('數學'))

q物件組合多個查詢條件,通過(&,|,~)進行邏輯操作

q(條件1)邏輯操作符 q(條件2)

order_by

對查詢結果進行排序(預設公升序)

公升序: 模型類.objects.order_by('欄位名')

降序: 模型類.objects.order_by('-欄位名')

aggregate

聚合操作,對多行查詢結果中的一列進行操作,返回乙個值。(有sum,count,max,min,**g)

模型類.objects.aggregate(聚合類('模型屬性'))

返回值是乙個字典,格式:

count

統計滿足條件的物件的個數,返回值是乙個數字

模型類.objects.count()

開啟mysqld.cnf

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

重啟mysql服務

sudo service mysql restart

檢視mysql日誌內容

sudo tail -f /var/log/mysql/mysql.log

d:呼叫模型管理器的all, filter, exclude, order_by方法會產生乙個queryset

e:先過濾得到該查詢集還可以呼叫objects的方法運算元據

由一類的條件查詢多類資料

1.   一類物件 = 一類類名.objects.get(條件)

2.  多類類名.objects.filter(一類類名小寫__一類屬性名__條件 = 值)

由多類的條件查詢一類資料

1.   多類物件 = 多類類名.objects.get(條件)

2.   一類類名.objects.filter(多類類名小寫__多類屬性名__條件 =值 )

自關聯d:是一種特殊的一對多關係

u:自關聯關聯屬性定義:關聯屬性 = models.foreignkey('self')

自定義模型管理器

d:在模型類中自定義模型管理器,自定義後,django將不再生成預設的objects

e: 功能1:修改管理器返回的原始查詢集

u:①在views建立乙個自定義模型管理器類,繼承manager

Django ORM 基本操作的補償

from django.db import models create your models here.class classes models.model 班級表 titile models.charfield max length 32 m models.manytomanyfield tea...

UGUI Scroll View的基本使用方法

1.效果圖 2.目標功能 1 在左側有限空間內放置一系列的toggle,滑動可以選擇不同toggle。2 滑動文字頁面 滑動條,可以看到所有文字 3.實現工具 scroll view 滾動檢視,可在gameobject ui scroll view處建立 4.scroll view解析 1 在scr...

Django ORM使用記錄 一

orm簡介 orm中的model 在django中model是你資料的單 一 明確的資訊 它包含了你儲存的資料的重要欄位和行為。通常,乙個模型 model 對映到乙個資料庫表 每個模型都是乙個python類,它是django.db.models.model的子類。模型的每個屬性都代表乙個資料庫字段 ...