Django操作数据库查询的几种方式
作者:互联网
基本查询
- 查询BookInfo内id为1的数据
BookInfo.objects.get(id=1)
- 查询所有数据
BookInfo.objects.all()
- 查询所有数据的数量
BookInfo.objects.all().count()
过滤查询
- 查询id为1的数据
BookInfo.objects.filter(id=1)
- 模糊查询: 查询包含’ xx '字的图书
包含:contains
BookInfo.objects.filter(btitle__contains='湖')
- 模糊查询: 查询以 ’ xx ’ 字结尾的图书
结尾: endswith
BookInfo.objects.filter(btitle__endswith='部')
- 查询不为空的数据
isnull 为空是True 不为空False
BookInfo.objects.filter(btitle__isnull=False)
- 查询id为1,3,5的图书
BookInfo.objects.filter(id__in = [1,3,5])
- 查询id大于3的图书
__gt大于
__gte大于等于
__lt小于
__lte小于等于
BookInfo.objects.filter(id__gt = 3)
- 查询1980年发表的图书
__year 匹配date日期的年份
BookInfo.objects.filter(bpub_date__year = 1980)
- 查询1990年1月1日后发表的图书
直接等于一个日期格式
BookInfo.objects.filter(bpub_date__gt = '1990-1-1')
F 、 Q 对象
F对象
使用之前要先导包 from django.db.models import F,Q
F 对象可以实现对象与属性之间的比较
- 查询阅读量大于等于评论量的作品
bread(阅读量)__gte(大于等于) = F('bcomment') 评论量
from django.db.models import F,Q
BookInfo.objects.filter(bread__gte = F('bcomment'))
- 查询阅读量大于等于2倍的评论量
BookInfo.objects.filter(bread__gte = F('bcomment') * 2)
Q对象
Q对象可以实现MySQL里面的not 、and 、 or
- 查询阅读量大于20 并且 id小于3的数据
与或非: & | ~
BookInfo.objects.filter(Q(bread__gt=20) & Q(id__lt=3))
聚合函数
导包
from django.db.models import Avg, Count, Sum, Max, Min
使用
# 求和
BookInfo.objects.aggregate(Sum('bread'))
# 求最大值
BookInfo.objects.aggregate(Max('bread'))
# 求最小值
BookInfo.objects.aggregate(Min('bread'))
# 求平均值
BookInfo.objects.aggregate(Avg('bread'))
order_by排序
BookInfo.objects.all().order_by('bread')
倒序
BookInfo.objects.all().order_by('-bread')
标签:__,Django,数据库,BookInfo,filter,objects,查询,bread 来源: https://blog.csdn.net/bjsyc123456/article/details/115335361