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的子類。模型的每個屬性都代表乙個資料庫字段 ...