Django 模型类—查询
1.修改mysql的日志文件:
让其产生mysql.log,即是mysql的日志文件,里面记录的对MySQL数据库的操作记录。
(1)使用下面的命令打开mysql 的配置文件,去除68,69行的注释,然后保存。
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
打开之后输入68,然后按G
(2)重启mysql服务,就会产生mysql日志文件。
sudo service mysql restart
(3)打开MySQL的日志文件。
/var/log/mysql/mysql.log是MySQL的日志文件所在的位置。
使用下面的命令可以实时查看mysql的日志文件:
sudo tail -f /var/log/mysql/mysql.log
2.查询函数
通过模型类.objects属性可以调用如下函数,实现对模型类对应的数据表的查询。
(1)进入虚拟交互环境
(2)查询函数
(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中的ORM操作——模型类数据查询
- django模型类生成数据表后,给数据表添加新的字段
- python Django 数据库查询
- 在django中按照时间范围查询数据库
- python3开发进阶-Django框架中的ORM的常用操作的补充(F查询和Q查询,事务)
- 13)django-ORM(连表一对多,外键创建,创建数据,3种查询)
- Django 数据库查询
- 模型类的getDbFields方法改进 查询时排除某字段
- python web开发——Django执行查询
- Django分页查询并返回jsons数据(中文乱码解决方法)
- CAU绩点自助查询系统——一个基于Django的Web应用练习
- Django中对数据查询结果进行排序的方法
- Django框架中数据的连锁查询和限制返回数据的方法
- django的各种查询
- Django查询数据库的性能优化示例代码
- 实例详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化(三)
- Django中的查询
- Django-model进阶(中介模型,查询优化,extra,整体插入)
- 使用Python的web.py框架实现类似Django的ORM查询的教程
- django查询数据库