查询

  • all()

    • 返回模型类对应表格中所有数据,返回查询集
  • get()
    • 返回表格中满足条件的一条且只能有一条数据
    • 如果查到多条数据,则抛异常:MultipleObjectsReturned
    • 查询不到数据,则抛异常:DoesNotExist
  • filter()
    • 参数写查询条件,返回满足条件的数据,返回查询集
    • 条件格式:模型类属性名__条件名 = 值

==条件名==

  1. 判等 exact
    1. list=BookInfo.books.filter(id__exact=1)
    2. 可简写为:
    3. list=BookInfo.books.filter(id=1)
  2. 模糊查询
  • 包含:contains
  • 结尾和开头:endswith;startswith
    1. list = BookInfo.objects.filter(btitle__contains = "部")
    2. list = BookInfo.objects.filter(btitle__startswith = "天")
  1. 空查询 isnull
    1. <!--查询标题为空-->
    2. BookInfo.objects.filter(btitle__isnull = Flase)
  2. 范围查询
    1. BookInfo.objects.filter(id__in=[1,3,5])
  3. 比较查询
    • 大于:gt
    • 小于:lt
    • 大于等于:gte
      1. BookInfo.objects.filter(id__gt=2)
  4. 日期查询
    1. BookInfo.objects.filter(bpub_date__year = 1980)
    2. BookInfo.objects.filter(bpub_date__gt = date(1980,12,1)
  • include():查询不满足条件的数据,返回
    1. BookInfo.objects.include(id=3)
  • F对象:类属性之间比较
    • 需要导入:from django.db.models import F
      1. demo:查找阅读量大于评论数2倍0的
      2. BookInfo.objects.filter(bread__gt = F(bcomment)*2)
  • Q对象:多个属性之间比较
    • 导入模块:from django.db.models import Q
    • 或关系:|
    • 与关系:&
    • 取反:~
      1. BookInfo.objects.filter(Q(bcomment__gt = 40)|Q(bread__gt = 20))
      2. BookInfo.objects.filter(~Q(id=3))
  • order_by:排序 返回查询集
    • 默认从小到大
    • 加 - :从大到小
      1. BookInfo.objects.all().order_by(id)
      2. BookInfo.objects.filter(id__gt = 2).order_by('-bread')
  • 聚合 aggregate 返回字典
    • 对查询结果进行聚合操作
    • sum count max min avg
    • 使用前导入:from django.db.models import Sum
      1. 例:查询所有图书的数目。
      2. BookInfo.objects.aggregate(Count('id'))
      3. {'id__count': 5}
      4. 例:查询所有图书阅读量的总和。
      5. BookInfo.objects.aggregate(Sum('bread'))
      6. {'bread__sum': 126}
  • count()函数
  • 作用:统计满足条件数据的数目。
    1. 例:统计所有图书的数目。
    2. BookInfo.objects.count()
    3. 注意返回值类型
    4. 例:统计id大于3的所有图书的数目。
    5. BookInfo.objects.filter(id__gt=3).count()

    删除

  • 对象.delete()

修改

  • 获取对象,重新写
  • save():保存

查询集

查询集特性

  • 惰性查询

    • 只有在实际使用查询集中的数据的时候才会发生对数据库的真正查询。
  • 缓存
    • 当使用的是同一个查询集时,第一次的时候会发生实际数据库的查询,然后把结果缓存起来,之后再使用这个查询集时,使用的是缓存中的结果。

限制查询集

  1. - b[0]就是取出查询集的第一条数据,
  2. - b[0:1].get()也可取出查询集的第一条数据。
  3. - 如果b[0]不存在,会抛出IndexError异常,
  4. - 如果b[0:1].get()不存在,会抛出DoesNotExist异常。多条时抛MultiObjectsReturned
    • 对一个查询集进行切片操作会产生一个新的查询集,下标不允许为负数。
      exists():判断一个查询集中是否有数据,有返回True

参考了北半球网站的相关资料

Django的ORM基础增删改查的更多相关文章

  1. Python学习---django之ORM的增删改查180125

    模型常用的字段类型参数 <1> CharField        #字符串字段, 用于较短的字符串.        #CharField 要求必须有一个参数 maxlength, 用于从数 ...

  2. Django之ORM的增删改查操作流程

    总结:ORM的 查.增.删.改 - 查 - client - 有一个展示页面(xxx_show.html) - 这一个页面一输入执行后,get请求向server端发送 - 这个展示页面有添加按钮.删除 ...

  3. Django之ORM数据库增删改查

    总结:ORM的 查.增.删.改 - 查 - client - 有一个展示页面(xxx_show.html) - 这一个页面一输入执行后,get请求向server端发送 - 这个展示页面有添加按钮.删除 ...

  4. Django之ORM的增删改查

    一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name ="海东",cou ...

  5. Django ORM 数据库增删改查

    Django ORM 数据库增删改查 增 # 创建.增加数据(推荐) models.UserInfo.objects.create(username=') # 创建.增加数据 dic = {'} mo ...

  6. Python进阶----数据库的基础,关系型数据库与非关系型数据库(No SQL:not only sql),mysql数据库语言基础(增删改查,权限设定)

    day37 一丶Python进阶----数据库的基础,mysql数据库语言基础(增删改查,权限设定) 什么是数据库:    简称:DataBase ---->DB    数据库即存放数据的仓库, ...

  7. Web框架之Django_02基本操作(Django项目启动配置、数据库连接、orm、增删改查)

    摘要: Django项目简单现实过程 pycharm连接数据库 Django之orm简单操作增删改查 一.新建Django项目.配置.设置: 新建Django项目:(为了熟悉Django操作,暂时全部 ...

  8. ORM基本增删改查

    将上一节建造好的数据库 引入Navicate copy_path找到数据表路径 再用navicat打开 创建好的db不只一张表,其中第一张是我们创建的可以用的表  ,其他都是django自带功能所需表 ...

  9. Django之数据表增删改查

    Django数据增删改查: 上课代码 from django.shortcuts import render,HttpResponse # Create your views here. from a ...

随机推荐

  1. LoadRunner中两种录制模式的区别

    决定我们成为什么样人的,不是我们的能力,而是我们的选择. ——<哈利-波特与密室> 一.先看看两种模式的设置和录制脚本的区别 设置HTML录制模式: 设置URL录制模式: HTML脚本: ...

  2. userData IE

    蛮讨厌IE的,因为他常常需要特别照顾,就像DOM Storage(sessionStorage和localStorage)只能支持IE8+,对于以下的只能使用userData. 原理:通过在docum ...

  3. 开发自己的composer包

    1. 创建一个开发目录 mkdir project cd project 2. 利用composer生成一个composer.json composer init > Welcome to th ...

  4. HDU3666 THE MATRIX PROBLEM (差分约束+取对数去系数)(对退出情况存疑)

    You have been given a matrix C N*M, each element E of C N*M is positive and no more than 1000, The p ...

  5. zookeeper入门到精通

  6. javascript之闭包,递归,深拷贝

    闭包 理解:a函数执行后return出b函数且b函数可以访问a函数的数据 好处:子函数存储在复函数内部,子函数执行完不会被自动销毁 坏处:占用内存比较大 ex: function bibao(){ v ...

  7. dos窗口的乱码问题

    1.在dos窗口上输入chcp 65001 2.然后右键属性选择字体

  8. 苹果app(iOS app)的URL schemes

    最近折腾iOS快捷启动应用或应用内的某个动作的神器launch center pro (LCP),发现很多国产app并没有被LCP官方收录,所以不得不想办法找到app的url schemes. 下面是 ...

  9. Coding WebIDE 开放支持第三方 Git 仓库

    为了给开发者提供更多便捷的开发方式,Coding.net 现正式宣布 WebIDE 开放啦 ! 用户可以自由选择各大代码托管平台,推送代码到其它家代码仓库啦,同时新版的 WebIDE 还有如下特性: ...

  10. 3.4-3.6 Hive Storage Format

    一.file format ORCFile在HDP 2:更好的压缩,更好的性能: https://zh.hortonworks.com/blog/orcfile-in-hdp-2-better-com ...