ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Django操作数据库查询的几种方式

2021-03-30 21:34:18  阅读:268  来源: 互联网

标签:__ Django 数据库 BookInfo filter objects 查询 bread


基本查询

在这里插入图片描述

  • 查询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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有