在Django中對資料的增刪改查
阿新 • • 發佈:2018-12-08
1.增加資料
1.Entry.objects.creat(屬性=值,屬性=值) 返回值: 插入成功:則返回建立好的實體物件 插入失敗:則返回None 2.建立一個save的物件,並通過save()進行儲存 obj = Entry(屬性=值,屬性=值) obj.屬性 = 值 obj.save() 無返回值,儲存成功後,obj會重新賦值 3.通過字典建立Entry物件,並通過save()進行儲存 dic= { "屬性1":"值一" "屬性2":"值二" } obj = Entry(**dic) obj.save()
2.查詢資料(重點)
通過Entry.objects呼叫查詢介面函式 Entry.objects.all() Entry.objects提供了該實體的所有的資料的查詢 所有的介面函式都可以通過一個query屬性來得到所對應的sql語句 Entry.objects.all().query 1.獲取所有查詢結果的方法 方法:all() 用法:Entry.object.all() 返回:QuerySet(查詢結果集,本質是一個封裝了若干物件的列表) SELECT `index_author`.`id`, `index_author`.`name`, `index_author`.`age`, `index_author`.`email`, `index_author`.`isActive` FROM `index_author` <QuerySet [<Author: Author object>, <Author: Author object>, <Author: Author object>, <Author: Author object>]> 2.查詢返回指定列 方法:values() | values('列名1','列名2') 作用:查詢表中資料的部分列,封裝到字典中,在封裝到QuerySet中 返回:QuerySet(查詢結果集,本質就是一個封裝了若干字典的列表 3.查詢返回指定列 方法: _list() 作用:將資料封裝到元組中再封裝到列表中 4.排序方法 方法:order_by() 語法:Entry.objects.order_by('列1',"列2") 預設是升序排序,列名前加一個-,表示降序排序 5.查詢只返回一條資料 方法:get(條件) 注意: 該方法只適用於只能查詢出一條結果的場合 如果查詢多餘一條資料或沒有查詢出結果都會丟擲結果 返回單個實體 6.根據條件查詢部分行 方法:filter(條件) ex: 1.查詢Author實體中id = 1 的資訊 author = Author.objects.filter(id=1) 非等值條件查詢使用查詢謂詞Filed Lookups 語法:Entry.objects.filter(屬性__查詢謂詞 = 值) 注意: 1.每個查詢謂詞都是一個獨立的功能條件 __exact:等值條件判斷 __gt:大於條件判斷 __year:得到日期中的年份再進行進一步判斷 __contains:模糊查詢'%xxx%' __range:模糊查詢 between and ... ... 2.所有支援條件查詢的位置處都支援查詢謂詞 filter(),get(),exclude() 7.對條件取反 方法:exclude(條件) ex: Author.objects.exclude(id=1) select * from index_author where not(id=1) 8.聚合查詢(不帶分組) 方法:aggregate(列明= 聚合函式('列')) ex: Author.objects.aggregate(sumAge=Sum'age')) 聚合函式: 1.Avg():平均值 2.Count():數量 3.Sum():求和 4.Min():求最小值 5.Max():求最大值 9.聚合查詢(帶分組) 方法:annotate(名=聚合函式('列')) ex: 按id分組查詢平均年齡 Author.object.values('id').annotate(avgAge=Avg('age')).all() 集合where,分組查詢,having於一體的查詢介面 Author.objects .filter(id__gte=3) where子句 .values('isActive') group by
3.修改資料
1.修改單個實體
1.查
通過get()查詢出要修改的實體
2.改
通過實體物件的屬性值
3.儲存
通過實體物件的save()方法儲存資料庫
2.批量修改資料
呼叫QuerySet的Update(屬性=值,屬性=值)實現批量修改
4.刪除資料
呼叫實體物件/查詢結果集的delete() 完成刪除 1.刪除單個物件 au = Author.objects.get(id=1) au.delete() 2.批量刪除 aulist = Author.objects.all() aulist.delete