博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django 模型类—查询
阅读量:5811 次
发布时间:2019-06-18

本文共 2685 字,大约阅读时间需要 8 分钟。

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

转载于:https://blog.51cto.com/13742773/2345197

你可能感兴趣的文章
gcc 的 loop unrolling
查看>>
Grails中的UrlMapping
查看>>
上博客园,用工作台
查看>>
插入排序
查看>>
ArcGIS Engine+拓扑操作
查看>>
符号表
查看>>
android gravity属性和weight属性
查看>>
Oracle中TO_CHAR格式
查看>>
xml解析
查看>>
2012下半年-学习目录
查看>>
.NET异步编程总结----四种实现模式
查看>>
百度统计流量研究院——了解互联网行业基本数据分布和趋势
查看>>
光棍节程序员闯关秀过关全攻略(附带小工具)
查看>>
SELinux 入门
查看>>
新版python logging 封装,支持同时向console,file,socket输出
查看>>
django form 定义
查看>>
[转载]ASP.NET Web API author
查看>>
jps命令
查看>>
SupportedPackages – PyInstaller
查看>>
python socket向百度发送http长连接请求 并做搜索
查看>>