查询

  • 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. 盈创动力之 JS校验方法

    var IS_NULL = 128; // 10000000var IS_FULL = 64; // 01000000var IS_HALF = 32; // 00100000var IS_ASCII ...

  2. the art of seo(chapter one)

    preface:Andy Johns (@ibringtraffic):growth strategist@Wealthfront ***1.Search Reflecting Consciousne ...

  3. linux应用之mysql数据库指定版本的yum安装(centos)

    A Quick Guide to Using the MySQL Yum Repository Abstract The MySQL Yum repository provides RPM packa ...

  4. im资源

    https://github.com/oikomi/FishChatServer https://github.com/subrosa-io https://github.com/WhisperSys ...

  5. ACM应该学什么(知乎学长)

    网络上流传的答案有很多,估计提问者也曾经去网上搜过.所以根据自己微薄的经验提点看法. 我ACM初期是训练编码能力,以水题为主(就是没有任何算法,自己靠动脑筋能够实现的),这种题目特点是麻烦,但是不难, ...

  6. 【C/C++】产生随机数

    #include<iostream> #include<Ctime> #include<Cstdlib> using namespace std; //产生n个st ...

  7. bzoj 2179 FFT快速傅立叶 —— FFT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2179 默写板子,注释的是忘记的地方. 代码如下: #include<iostream& ...

  8. MongoDB Oplog

    Capped Collections MongoDB有一种特殊的Collection叫Capped collections,它的插入速度非常快,基本和磁盘的写入速度差不多,并且支持按照插入顺序高效的查 ...

  9. Flutter从入门到进阶实战携程网App_汇总贴

    视频地址:https://coding.imooc.com/class/321.html?mc_marking=60e5294c605a87b2af7257d06f70505e&mc_chan ...

  10. Flutter实战视频-移动电商-16.补充_保持页面状态

    16.补充_保持页面状态 修正一个地方: 设置了item的高度为380 横向列表为380.最终build的高度也增加了50为430. 增加了上面的高度以后,下面那个横线划掉的价格可以显示出来了. 但是 ...