查詢mysql數(shù)據(jù)庫日志
查看mysql數(shù)據(jù)庫日志可以查看對數(shù)據(jù)庫的操作記錄。 mysql日志文件默認(rèn)沒有產(chǎn)生,需要做如下配置:
????sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
重啟命令
????sudo service mysql restart
使用如下命令打開mysql日志文件。
? ??sudo tail -f /var/log/mysql/mysql.log #可以實(shí)時(shí)查看數(shù)據(jù)庫的日志內(nèi)容
字段查詢
說明:屬性名稱和比較運(yùn)算符間使用兩個(gè)下劃線,所以屬性名不能包括多個(gè)下劃線。
屬性名稱__比較運(yùn)算符=值
條件查詢
1) 查詢等
exact:表示判等。
例:查詢編號為1的圖書。
????list=BookInfo.objects.filter(id__exact=1)
2) 模糊查詢
contains:是否包含。
例:查詢書名包含'傳'的圖書。
????list = BookInfo.objects.filter(btitle__contains='傳')
tartswith、endswith:以指定值開頭或結(jié)尾。
例:查詢書名以'部'結(jié)尾的圖書
????list = BookInfo.objects.filter(btitle__endswith='部')
以上運(yùn)算符都區(qū)分大小寫,在這些運(yùn)算符前加上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)
不等于的運(yùn)算符,使用exclude()過濾器。
例:查詢編號不等于3的圖書
????list = BookInfo.objects.exclude(id=3)
6) 日期查詢
year、month、day、week_day、hour、minute、second:對日期時(shí)間類型的屬性進(jìn)行運(yùn)算。
例:查詢1980年發(fā)表的圖書。
????list = BookInfo.objects.filter(bpub_date__year=1980)
例:查詢1980年1月1日后發(fā)表的圖書。
? ??from datetime import date
????list = BookInfo.objects.filter(bpub_date__gt=date(1990,1,1))
F對象
? ? 屬性之間進(jìn)行比較
? ??語法如下:
????????F(屬性名)
例:查詢閱讀量大于等于評論量的圖書。
????from django.db.models import F
????list = BookInfo.objects.filter(bread__gte=F('bcomment'))
可以在F對象上使用算數(shù)運(yùn)算。
例:查詢閱讀量大于2倍評論量的圖書。
????list = BookInfo.objects.filter(bread__gt=F('bcomment') *2)
Q對象
????語法如下:
????????Q(屬性名__運(yùn)算符=值)
例:查詢閱讀量大于20的圖書,改寫為Q對象如下。
????from django.db.models import Q
????list = BookInfo.objects.filter(Q(bread__gt=20))
Q對象可以使用&、|連接,&表示邏輯與,|表示邏輯或。
例:查詢閱讀量大于20,或編號小于3的圖書,只能使用Q對象實(shí)現(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()過濾器調(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的返回值是一個(gè)字典類型,格式如下:
????{'聚合類小寫__屬性名':值}
????如:{'sum__bread':3}
使用count時(shí)一般不使用aggregate()過濾器。
例:查詢圖書總數(shù)。
????list = BookInfo.objects.count()
????注意count函數(shù)的返回值是一個(gè)數(shù)字。