1. 程式人生 > >Django中models利用ORM對Mysql進行查表的語句

Django中models利用ORM對Mysql進行查表的語句

一: all()  返回模型類對應表格中所有的資料。

二:get():返回表格中滿足條件的一條資料,如果查到多條資料,則拋異常:MultipleObjectsReturned,查詢不到資料,則拋異常:DoesNotExist。

三:filter():引數寫查詢條件,返回滿足條件 QuerySet 集合資料。

條件格式:

“模型類屬性名” __條件名=值(此處模型類屬性名為model裡面的屬性名,不是資料庫裡面表的欄位名)

1)判斷是否存在 

1 BookInfo.object.filter(id__exact=1)此處的__exact 可以省略

2)模糊查詢 

>查詢書名包含傳的圖書

1 BookInfo.objects.filter(btitle__contains=’傳’) 
>查詢書名不為空的圖書

1 BookInfo.objects.filter(btitle__isnull=False) 

>查詢圖書id在1,3,5的圖書 
1. BookInfo.objects.filter(id__in=[1,3,5])

>比較查詢 gt lt(less than) gte(equal) lte 

1 BookInfo.objects.filter(id__gte=3)

>日期查詢

1. BookInfo.objects.filter(bpub_date__year = 1980)  

2. BookInfo.objects.filter(bpub_date__gt = date(1980,1,1)) 

四、exclude()返回不滿足條件的資料

1 BookInfo.objects.exclude(id=3) 

五  F物件  
作用:用於類屬性之間的比較條件。 

用法:
1:匯入  from django.db.models import F

2 :舉例  BookInfo.objects.filter(bread_gt = F('bcomment')  (查詢閱讀量大於評論量的圖書)

3: 舉例 BookInfo.objects.filter(bread__gt=F(‘bcomment’)*2) (查詢閱讀量等於2倍評論量的圖書) 

六 Q物件
作用:用於查詢時的邏輯條件。可以對 Q 物件進行&|~操作。 

用法:

1:匯入 from django.db.models import Q

2:  舉例:

BookInfo.objects.filter(id__gt=3,bread__gt=30)  和 Book.objects.filter(Q(id__gt=3)&Q(bread__gt=3))
3:舉例:

BookInfo.objects.filter(Q(id__gt=3) | Q(bread__gt=30))

七 order_by 返回QuerySet
作用:對查詢結果進行排序。 

1:舉例 BookInfo.object.all().order_by("id")[正序]

2:舉例 BookInfo.object.all().order_by("-id")[倒序]

3:舉例:BookInfo.objects.filter(id__gt=3).order_by('-bread')