11django模型[條件查詢]

字段查詢

實現(xiàn)sql中where的功能流礁,調用過濾器filter()崇棠、exclude()丸卷、get()谜嫉,下面以filter()為例沐兰。

通過"屬性名_id"表示外鍵對應對象的id值蔽挠。

語法如下:

說明:屬性名稱和比較運算符間使用兩個下劃線,所以屬性名不能包括多個下劃線比原。

屬性名稱__比較運算符=值

查詢mysql數(shù)據(jù)庫日志

查看mysql數(shù)據(jù)庫日志可以查看對數(shù)據(jù)庫的操作記錄量窘。 mysql日志文件默認沒有產(chǎn)生氢拥,需要做如下配置:

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

把68锨侯,69行前面的#去除囚痴,然后保存并使用如下命令重啟mysql服務深滚。
選區(qū)_260
sudo service mysql restart

使用如下命令打開mysql日志文件成箫。

sudo tail -f /var/log/mysql/mysql.log #可以實時查看數(shù)據(jù)庫的日志內容

選區(qū)_259

打開booktest/views.py文件旨枯,在index視圖中編寫如下查詢代碼:

條件查詢

1) 查詢等

exact:表示判等。

例:查詢編號為1的圖書攀隔。

list=BookInfo.objects.filter(id__exact=1)
可簡寫為:
list=BookInfo.objects.filter(id=1)

2) 模糊查詢

contains:是否包含昆汹。

說明:如果要包含%無需轉義,直接寫即可辈末。

例:查詢書名包含'傳'的圖書挤聘。

list = BookInfo.objects.filter(btitle__contains='傳')

tartswith捅彻、endswith:以指定值開頭或結尾步淹。

例:查詢書名以'部'結尾的圖書

list = BookInfo.objects.filter(btitle__endswith='部')

以上運算符都區(qū)分大小寫,在這些運算符前加上i表示不區(qū)分大小寫键闺,如iexact幼驶、icontains、istartswith购桑、iendswith.

3) 空查詢

isnull:是否為null。

例:查詢書名不為空的圖書硕噩。

list = BookInfo.objects.filter(btitle__isnull=False)

4) 范圍查詢

in:是否包含在范圍內缭贡。

例:查詢編號為1或3或5的圖書

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

5) 比較查詢

gt炉擅、gte谍失、lt莹汤、lte:大于纲岭、大于等于、小于窃判、小于等于喇闸。

例:查詢編號大于3的圖書

list = BookInfo.objects.filter(id__gt=3)

不等于的運算符燃乍,使用exclude()過濾器橘沥。

例:查詢編號不等于3的圖書

list = BookInfo.objects.exclude(id=3)

6) 日期查詢

year座咆、month仓洼、day色建、week_day、hour某残、minute、second:對日期時間類型的屬性進行運算介牙。

例:查詢1980年發(fā)表的圖書环础。

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

例:查詢1980年1月1日后發(fā)表的圖書线得。

list = BookInfo.objects.filter(bpub_date__gt=date(1990, 1, 1))

F對象

之前的查詢都是對象的屬性與常量值比較徐伐,兩個屬性怎么比較呢? 答:使用F對象魏保,被定義在django.db.models中摸屠。

語法如下:

F(屬性名)

例:查詢閱讀量大于等于評論量的圖書季二。

from django.db.models import F
...
list = BookInfo.objects.filter(bread__gte=F('bcomment'))

可以在F對象上使用算數(shù)運算。

例:查詢閱讀量大于2倍評論量的圖書刻蚯。

list = BookInfo.objects.filter(bread__gt=F('bcomment') * 2)

Q對象

多個過濾器逐個調用表示邏輯與關系炊汹,同sql語句中where部分的and關鍵字讨便。

例:查詢閱讀量大于20,并且編號小于3的圖書霸褒。

list=BookInfo.objects.filter(bread__gt=20,id__lt=3)
或
list=BookInfo.objects.filter(bread__gt=20).filter(id__lt=3)

如果需要實現(xiàn)邏輯或or的查詢废菱,需要使用Q()對象結合|運算符殊轴,Q對象被義在django.db.models中梳凛。

語法如下:

Q(屬性名__運算符=值)

例:查詢閱讀量大于20的圖書韧拒,改寫為Q對象如下。

from django.db.models import Q
...
list = BookInfo.objects.filter(Q(bread__gt=20))

Q對象可以使用&塑悼、|連接厢蒜,&表示邏輯與斑鸦,|表示邏輯或巷屿。

例:查詢閱讀量大于20嘱巾,或編號小于3的圖書诫钓,只能使用Q對象實現(xiàn)

list = BookInfo.objects.filter(Q(bread__gt=20) | Q(pk__lt=3))

Q對象前可以使用~操作符菌湃,表示非not惧所。

例:查詢編號不等于3的圖書纯路。

list = BookInfo.objects.filter(~Q(pk=3))

聚合函數(shù)

使用aggregate()過濾器調用聚合函數(shù)寞忿。聚合函數(shù)包括:Avg驰唬,Count,Max,Min叫编,Sum辖佣,被定義在django.db.models中。

例:查詢圖書的總閱讀量搓逾。

from django.db.models import Sum
...
list = BookInfo.objects.aggregate(Sum('bread'))

注意aggregate的返回值是一個字典類型卷谈,格式如下:

  {'聚合類小寫__屬性名':值}
  如:{'sum__bread':3}

使用count時一般不使用aggregate()過濾器。

例:查詢圖書總數(shù)霞篡。

list = BookInfo.objects.count()

注意count函數(shù)的返回值是一個數(shù)字世蔗。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市朗兵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖赁豆,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件墩衙,死亡現(xiàn)場離奇詭異心铃,居然都是意外死亡,警方通過查閱死者的電腦和手機愉棱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門朋其,熙熙樓的掌柜王于貴愁眉苦臉地迎上來氓辣,“玉大人,你說我怎么就攤上這事体斩》慵祝” “怎么了粱栖?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵渣淤,是天一觀的道長。 經(jīng)常有香客問我用踩,道長,這世上最難降的妖魔是什么惠奸? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任共虑,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己定续,他們只是感情好,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布黄娘。 她就那樣靜靜地躺著,像睡著了一般羔巢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上罩阵,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天傅是,我揣著相機與錄音龟再,去河邊找鬼。 笑死,一個胖子當著我的面吹牛割按,可吹牛的內容都是我干的择示。 我是一名探鬼主播汪诉,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起迂曲,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤队寇,失蹤者是張志新(化名)和其女友劉穎啤覆,沒想到半個月后辜纲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扫俺,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年香浩,在試婚紗的時候發(fā)現(xiàn)自己被綠了镜盯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡翅楼,死狀恐怖管嬉,靈堂內的尸體忽然破棺而出胎挎,到底是詐尸還是另有隱情项栏,我是刑警寧澤列另,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏连舍。R本人自食惡果不足惜参滴,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望弹沽。 院中可真熱鬧丽已,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嚎货,已是汗流浹背外潜。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工哆致, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留臣咖,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像酝豪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子庄撮,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內容

  • 字段查詢 實現(xiàn)sql中where的功能,調用過濾器filter()、exclude()搀突、get()仰迁,下面以filt...
    IT的咸魚閱讀 5,512評論 0 2
  • MVT圖解 項目準備 創(chuàng)建項目 創(chuàng)建應用 更換python解釋器:按需選擇 安裝應用 本地化 模板路徑在應用同級目...
    阿孝不會飛閱讀 771評論 0 2
  • 昨天去聽了geekband的開班講座权逗,一半有著對未來職業(yè)轉型規(guī)劃的打算袱箱,一半是對geek這第三人種的好奇。 the...
    出走De娜拉閱讀 292評論 0 1
  • 和好朋友漸行漸遠发笔,是什么感覺盟萨?“共你親到無可親密后,便知友誼萬歲是盡頭”了讨。 高中一個基友捻激,是個丟手機狂魔。高中那時...
    wanna小武閱讀 577評論 0 2
  • 嫁入豪門是很多年輕美眉的夢前计。而她就是這樣一個在外人看來很幸運又不幸的女人胞谭。 Y女士嫁給了一個有錢人,剛開始...
    蔓風閱讀 311評論 0 0