Django模型類—查詢

1.修改MySQL的日志文件:

創(chuàng)新互聯(lián)建站專注于南關(guān)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供南關(guān)營(yíng)銷型網(wǎng)站建設(shè),南關(guān)網(wǎng)站制作、南關(guān)網(wǎng)頁(yè)設(shè)計(jì)、南關(guān)網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造南關(guān)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供南關(guān)網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

讓其產(chǎn)生mysql.log,即是mysql的日志文件,里面記錄的對(duì)MySQL數(shù)據(jù)庫(kù)的操作記錄。

(1)使用下面的命令打開mysql 的配置文件,去除68,69行的注釋,然后保存。
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

打開之后輸入68,然后按G

Django 模型類—查詢

(2)重啟mysql服務(wù),就會(huì)產(chǎn)生mysql日志文件。
sudo service mysql restart

(3)打開MySQL的日志文件。
/var/log/mysql/mysql.log是MySQL的日志文件所在的位置。

使用下面的命令可以實(shí)時(shí)查看mysql的日志文件:
sudo tail -f /var/log/mysql/mysql.log

Django 模型類—查詢

2.查詢函數(shù)

通過(guò)模型類.objects屬性可以調(diào)用如下函數(shù),實(shí)現(xiàn)對(duì)模型類對(duì)應(yīng)的數(shù)據(jù)表的查詢。

(1)進(jìn)入虛擬交互環(huán)境

Django 模型類—查詢

(2)查詢函數(shù)

Django 模型類—查詢
Django 模型類—查詢

(a)get示例:BookInfo.objects.get(id=1)

(b)all示例:BookInfo.objects.all()

(c)filter示例:
條件格式:模型類屬性名__條件名=值 (雙下劃線)

1)判等 條件名:exact
BookInfo.objects.get(id__exact=1) #標(biāo)準(zhǔn)寫法
BookInfo.objects.get(id=1) #簡(jiǎn)寫

2)模糊查詢 條件名:contains
BookInfo.objects.filter(btitle__contains='傳') #帶傳字查詢

3)endswith結(jié)尾,starswitch開頭
BookInfo.objects.filter(btitle__endswith='部')

4)空查詢 isnull
BookInfo.objects.filter(btitle__isnull=False) #查詢不為空的書名

5)范圍查詢 in

數(shù)據(jù)庫(kù)命令:select * from booktext_bookinfo where id in (1,2,3);

BookInfo.objects.filter(id__in=[1,2,3])

6)比較查詢
gt(greate than) lt(less than) gte(大于等于) lte(小于等于)

select * from booktest_bookinfo where id>3;

BookInfo.objects.filter(id__gt=3)

7)日期查詢

BookInfo.objects.filter(bpub_date__year=1980) #1980年發(fā)表的書

from datetime import date
BookInfo.objects.filter(bpub_date__gt=date(1999,2,5)) #查詢1999,2,5號(hào)后發(fā)表的書

(d)exclude方法示例:
BookInfo.objects.exclude(id=3)

(e)order_by方法示例:

BookInfo.objects.all().order_by('id') #從小到大
BookInfo.objects.order_by('id')

BookInfo.objects.all().order_by('-id') #從大到小
BookInfo.objects.order_by('-id')

BookInfo.objects.filter(id__gt=3).order_by('bread') #從大到小

3.F對(duì)象

作用:用于類屬性之間的比較
使用之前需要先導(dǎo)入:
from django.db.models import F

BookInfo.objects.filter(bread__gt=F('bcomment')) #閱讀量大于評(píng)論量

BookInfo.objects.filter(bread__gt=F('bcomment') * 2) #閱讀量大于評(píng)論量

4.Q對(duì)象

作用:用于查詢時(shí)條件之間的邏輯關(guān)系。not and or,可以對(duì)Q對(duì)象進(jìn)行& | ~

BookInfo.objects.filter(idgt=3,breadgt=3)
BookInfo.objects.filter(Q(idgt=3) & Q(breadgt=3)) #與關(guān)系

BookInfo.objects.filter(Q(idgt=3) | Q(breadgt=3)) #或關(guān)系

BookInfo.objects.filter( ~Q(bread__gt=3)) #非關(guān)系

5.聚合函數(shù)

作用:對(duì)查詢結(jié)果進(jìn)行聚合
sum count avg max min

(1)aggregate:調(diào)用這個(gè)函數(shù)來(lái)使用聚合。返回值是一個(gè)字典

使用前需先導(dǎo)入聚合類:
from django.db.models import Sum,Count,Max,Min,Avg

BookInfo.objects.all().aggregate(Count('id')) #查詢所有圖書的數(shù)目

BookInfo.objects.aggregate(Sum('bread')) #查詢所有圖書閱讀量的總和

(2)count 函數(shù) 返回值是一個(gè)數(shù)字

作用:統(tǒng)計(jì)滿足條件數(shù)據(jù)的數(shù)目

例:
BookInfo.objects.all().count()
BookInfo.objects.count() #統(tǒng)計(jì)所有圖書的數(shù)目

BookInfo.objects.filter(id__gt=3).count() #id大于3的所有圖書的數(shù)目

6.總結(jié)

Django 模型類—查詢

7.查詢集

all,filter,exclude,order_by 調(diào)用這些函數(shù)會(huì)產(chǎn)生一個(gè)查詢集,

QuerySet類對(duì)象可以繼續(xù)調(diào)用上面的所有函數(shù)。

查詢集特性:

(1)惰性查詢:只有在實(shí)際使用查詢集中的數(shù)據(jù)的時(shí)候才會(huì)發(fā)生對(duì)數(shù)據(jù)庫(kù)的真正查詢

(2)緩存:當(dāng)使用的是同一個(gè)查詢集時(shí),第一次的時(shí)候會(huì)發(fā)生實(shí)際數(shù)據(jù)庫(kù)的查詢,然后把結(jié)果緩存起來(lái),之后再使用這個(gè)查詢集時(shí),使用的是緩存中的結(jié)果。

限制查詢集:

可以對(duì)一個(gè)查詢集進(jìn)行取下標(biāo)或者切片操作來(lái)限制查詢集的結(jié)果。

對(duì)一個(gè)查詢集進(jìn)行切片操作會(huì)產(chǎn)生一個(gè)新的查詢集,下標(biāo)不允許為負(fù)數(shù)
Django 模型類—查詢
exists:判斷一個(gè)查詢集中是否有數(shù)據(jù)。True False

網(wǎng)站標(biāo)題:Django模型類—查詢
本文鏈接:http://bm7419.com/article10/jjejgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航網(wǎng)站營(yíng)銷、服務(wù)器托管、手機(jī)網(wǎng)站建設(shè)、、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)