1)使用下面的命令打开mysql配置文件 去除68 69行注释 然后保存
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
2) 重启mysql 服务 就会产生mysql日志文件
sudo service mysql restart
3) 打开mysql的日志文件
/var/log/mysql/mysql.log 是mysql日志文件 所在 的位置
查询函数
通过模型类.objects 属性可以调用如下函数 实现对模型类对应的数据表的查询
函数名
get
返回表中满足条件的一条且只能一条数据
返回值是一个模型的类对象
如果查询出多条数据 会抛出异常
all
返回模型类对应的表格中所有数据
返回值类型是QuerySet类型
filter
返回满足条件的数据
返回值是QuerySet类型
条件格式 属性名 __条件名 = 值
a)判等 条件名 exact
BookInfo.objects.get(id_exact=1)
b) 模糊查询
查询书名包含xx
contains (xx__contains='传')
endswith (xx__endswith = '部')
startswith (xx__startswith = 'xx' )
c) 空查询 isnull
d) 范围查询 in
xx.objects.filter(id__in = [1,3,5])
e)比较查询
xx.objects.filter(id__gt=3)
日期查询
bpub_date_year = 1980
bpub_date__gt = date(1980,1,1)
exclude 返回不满足条件的数据
order_by 对查询结果进行排序 返回值 QuerySet类型
xx.objects.filter( id__gt=3 ).order_by('-id')
F对象 两个属性进行比较
from django.db.models import F
xx.objects.filter(bread__gt=F('bcomment'))
xx.objects.filter(bread__gt=F('bcomment')*2)
Q对象
用于查询时条件之间的逻辑关系
not and or 可以用Q对象进行&|~操作
import django.db.models import Q
// 且的关系
BookInfor.objects.filter( id__gt = 3, bread__gt=30 )
BookInfo.objects.filter( Q(id__gt=3) & Q(bread__gt=30) )
// 或的关系
BookInfo.objects.filter( Q(id__gt=3) | Q(bread__gt=30) )
//
BookInfo.objects.filter( ~Q(id__gt=3) )
聚合函数
from django.db.models import Sum,Count,Max,Min,Avg
xx.objects.all().aggregate( Count('id') )
返回值 : { 'id__count':5 }
xx.objects.all().count( )
xx.objects.filter(id__gt=3).count()
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200831092107325.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3R3ZW50eWZvdXI0ZXZlcg==,size_16,color_FFFFFF,t_70#pic_center)
查询集特性
惰性查询
只有在实际使用查询集中的数据的时候才会 发生 对 数据库的真正查询
缓存特性
当使用的是同一个查询集时
第一次的时候会实际查询
然后把结果 缓存起来 之后再使用这个查询集时 使用的是缓存中的结果
拿查询集的第一条数据
books[0]
books[0:1].get()
判断一个查询集是否有数据 exists