查询

  • 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. RAC环境下oracle实例启动问题:ora-01565,ora-17503

         今天有现场因为突然听电,数据库服务器停了,需要我远程重启一下.   现场是RAC环境,oracle10.2.0.4.   登录后,startup,报错如下   根据报错,初步判断是共享数据文 ...

  2. 【Redis笔记(四)】 Redis数据结构 - list链表

    原创作品,转载请标明:http://blog.csdn.net/Xiejingfa/article/details/50573605 经过前面的介绍,我们学习了Redis中string字符串.hash ...

  3. 「BZOJ3083」遥远的国度(树剖换根

    3083: 遥远的国度 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 4859  Solved: 1372[Submit][Status][Discu ...

  4. 基于aspectj实现AOP操作的两种方式——xml配置

    1. 要导入的 jar 包: 常用的aspectj表达式: 权限修饰符可以省略,以下表示:返回值类型为任意,com.chy.service包以及其子包下的.任意类的.参数任意的.任意方法 execut ...

  5. 深度学习网络结构中超参数momentum了解

    训练网络时,通常先对网络的初始权值按照某种分布进行初始化,如:高斯分布.初始化权值操作对最终网络的性能影响比较大,合适的网络初始权值能够使得损失函数在训练过程中的收敛速度更快,从而获得更好的优化结果. ...

  6. FTP:文件传输协议(指令及响应代码)

    文件传输协议(FTP)使得主机间可以共享文件. FTP 使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输.控制连接使用类似 TELNET 协议在主机间交换命令 ...

  7. error: templates may not be ‘virtual’

     模板函数不能是虚函数,原因如下:   首先呢,模板函数并不是函数,他需要特定的类型去实例化成为函数.你定义一个函数模板,是不生成任何函数的,只有当你用代码去调用它时,才会根据你的类型去实例化成为特定 ...

  8. 20个Flutter实例视频教程-第07节: 毛玻璃效果制作

    视频地址: https://www.bilibili.com/video/av39709290/?p=7 博客地址: https://jspang.com/post/flutterDemo.html# ...

  9. Flutter实战视频-移动电商-10.首页_FlutterSwiper轮播效果制作

    10.首页_FlutterSwiper轮播效果制作 博客地址: https://jspang.com/post/FlutterShop.html#toc-5c2 flutter_swiper http ...

  10. lua基本语法

    1.注释--  ;  --[[    ]] 2.控制语句: if ..then ..   elseif..  then..  else.. end while.. do..end repeat ..u ...