溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django 模型類—查詢

發布時間:2020-07-30 11:19:06 來源:網絡 閱讀:424 作者:bigbeatwu 欄目:編程語言

1.修改mysql的日志文件:

讓其產生mysql.log,即是mysql的日志文件,里面記錄的對MySQL數據庫的操作記錄。

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

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

Django 模型類—查詢

(2)重啟mysql服務,就會產生mysql日志文件。
sudo service mysql restart

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

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

Django 模型類—查詢

2.查詢函數

通過模型類.objects屬性可以調用如下函數,實現對模型類對應的數據表的查詢。

(1)進入虛擬交互環境

Django 模型類—查詢

(2)查詢函數

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

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

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

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

1)判等 條件名:exact
BookInfo.objects.get(id__exact=1) #標準寫法
BookInfo.objects.get(id=1) #簡寫

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

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

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

5)范圍查詢 in

數據庫命令: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年發表的書

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

(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對象

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

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

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

4.Q對象

作用:用于查詢時條件之間的邏輯關系。not and or,可以對Q對象進行& | ~

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

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

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

5.聚合函數

作用:對查詢結果進行聚合
sum count avg max min

(1)aggregate:調用這個函數來使用聚合。返回值是一個字典

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

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

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

(2)count 函數 返回值是一個數字

作用:統計滿足條件數據的數目

例:
BookInfo.objects.all().count()
BookInfo.objects.count() #統計所有圖書的數目

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

6.總結

Django 模型類—查詢

7.查詢集

all,filter,exclude,order_by 調用這些函數會產生一個查詢集,

QuerySet類對象可以繼續調用上面的所有函數。

查詢集特性:

(1)惰性查詢:只有在實際使用查詢集中的數據的時候才會發生對數據庫的真正查詢

(2)緩存:當使用的是同一個查詢集時,第一次的時候會發生實際數據庫的查詢,然后把結果緩存起來,之后再使用這個查詢集時,使用的是緩存中的結果。

限制查詢集:

可以對一個查詢集進行取下標或者切片操作來限制查詢集的結果。

對一個查詢集進行切片操作會產生一個新的查詢集,下標不允許為負數
Django 模型類—查詢
exists:判斷一個查詢集中是否有數據。True False

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女