Django模型-條件查詢

字段查詢

實現(xiàn)sql中where的功能遇汞,調(diào)用過濾器filter()软驰、exclude()卵洗、get()请唱,下面以filter()為例。

語法如下:

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

注:屬性名稱和比較運算符間使用兩個下劃線过蹂,所以屬性名不能包括多個下劃線十绑。

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

查看mysql數(shù)據(jù)庫日志可以查看對數(shù)據(jù)庫的操作記錄。

mysql日志文件默認(rèn)沒有產(chǎn)生酷勺,需要做如下配置:

??????????????????????? sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

把68本橙,69行前面的#去除,然后保存并使用如下命令重啟mysql服務(wù)脆诉。

??????????????????????? sudo service mysql restart

使用如下命令打開mysql日志文件甚亭。

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

打開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='傳')

startswith暇唾、endswith:以指定值開頭或結(jié)尾。

例:查詢書名以'部'結(jié)尾的圖書

??????????? 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:是否包含在范圍內(nèi)下硕。

例:查詢編號為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:對日期時間類型的屬性進(jìn)行運算柬甥。

例:查詢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對象

多個過濾器逐個調(diào)用表示邏輯與關(guān)系辜膝,同sql語句中where部分的and關(guān)鍵字无牵。

例:查詢閱讀量大于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()對象結(jié)合|運算符,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))

exclude() 也是取反

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

??????????? list = BookInfo.objects.exclude(id__exact=3)

聚合函數(shù)

使用aggregate()過濾器調(diào)用聚合函數(shù)颅悉。聚合函數(shù)包括:Avg沽瞭,Count,Max剩瓶,Min驹溃,Sum城丧,被定義在django.db.models中。

例:查詢圖書的總閱讀量吠架。

????????????? from???? django.db.models???? import ?? Sum

????????????? list = BookInfo.objects.aggregate(Sum('bread'))

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

????????????? {'屬性名__聚合類小寫':值}

???????????? 如:{'bread__sum':3}

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

例:查詢圖書總數(shù)傍药。

????????????? list = BookInfo.objects.count()

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拐辽,隨后出現(xiàn)的幾起案子拣挪,更是在濱河造成了極大的恐慌,老刑警劉巖俱诸,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件菠劝,死亡現(xiàn)場離奇詭異,居然都是意外死亡睁搭,警方通過查閱死者的電腦和手機(jī)赶诊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來园骆,“玉大人舔痪,你說我怎么就攤上這事膛虫∪龋” “怎么了崇败?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵茉唉,是天一觀的道長剧劝。 經(jīng)常有香客問我蚣常,道長盒粮,這世上最難降的妖魔是什么疟丙? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任余黎,我火速辦了婚禮重窟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘驯耻。我一直安慰自己亲族,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布可缚。 她就那樣靜靜地躺著霎迫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪帘靡。 梳的紋絲不亂的頭發(fā)上知给,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼涩赢。 笑死戈次,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的筒扒。 我是一名探鬼主播怯邪,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼花墩!你這毒婦竟也來了悬秉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤冰蘑,失蹤者是張志新(化名)和其女友劉穎和泌,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祠肥,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡武氓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了仇箱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片县恕。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖剂桥,靈堂內(nèi)的尸體忽然破棺而出弱睦,到底是詐尸還是另有隱情,我是刑警寧澤渊额,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站垒拢,受9級特大地震影響旬迹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜求类,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一奔垦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尸疆,春花似錦椿猎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至症革,卻和暖如春筐咧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工量蕊, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留铺罢,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓残炮,卻偏偏與公主長得像韭赘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子势就,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 字段查詢實現(xiàn)sql中where的功能泉瞻,調(diào)用過濾器filter()、exclude()蛋勺、get()瓦灶,下面以filte...
    B頭閱讀 281評論 1 0
  • Web框架之Django: (1)簡介: Django是一個由Python寫成開源的重量級Web應(yīng)用框架,采用MT...
    老肖閱讀 3,057評論 0 18
  • 原文:https://my.oschina.net/liuyuantao/blog/751438 查詢集API 參...
    陽光小鎮(zhèn)少爺閱讀 3,823評論 0 8
  • 團(tuán)團(tuán)在地鐵通道里走著抱完,他已經(jīng)覺得自己的臉頰在發(fā)燙贼陶。他把頭低著,不敢抬眼巧娱,默默地跟著人群往前走…… 通道里的過堂風(fēng)順...
    猴山覽勝閱讀 601評論 0 0
  • 一念一世界碉怔,很多時候我們只需要改變一下關(guān)注的焦點,原來阻礙我們成長的部分禁添,就會變得沒那么可怕撮胧,甚至消失。 短期小目...
    漂亮的藍(lán)一閱讀 122評論 0 0