查询

  • 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. html5--4-5 embed元素及其他

    html5--4-5 embed元素及其他 学习要点 掌握embed元素的使用 了解object元素的使用 温馨提示:关于video和audio的事件方法等涉及都JavaScript知识的内容,暂时不 ...

  2. c#设置系统时间后不起作用

    网上设置系统时间的代码很多,但是会出现设置后没有作用的问题 遇到以上问题可以按照如下办法解决 1.项目--属性--安全性--勾选启用ClickOne安全设置,如下图所示: 2.打开app.manife ...

  3. Android设备管理器 DevicePolicyManager

    设备管理器有个特点,你注册了之后如果不解除注册就会难以卸载带有设备管理器的应用,目前4.3版本仍未提示用户如何卸载,maybe later. 在「设定-安全」你可以看见「设备管理器」,它提供一些高级功 ...

  4. <编译>条件编译——判断当前使用的编译器及操作系统

    有时候编译需要多平台运行的代码,需要一些条件编译,经常忘记,这里专门记录一下,方便下次查找.   编译器 GCC #ifdef __GNUC__ #if __GNUC__ >= 3 // GCC ...

  5. 「NOIP2014」「Codevs3728」 联合权值(乱搞

    3728 联合权值 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold   题目描述 Description 输入描述 Input Description 输出描述 Ou ...

  6. [HAOI 2012] 容易题

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2751 [算法] 考虑k = 0的情况 , 根据乘法原理 : Ans = (n * ( ...

  7. 文件的打开函数第一类--fopen()

        fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式); 其中, “文件指针名”必须是被说明为FILE 类型的指针变量: “文件名”是被打开文件的 ...

  8. 配置tomcat https的步骤

    keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\tomcat.keystore -validity 36500 keytool -g ...

  9. hibernate 学习 五 hibernate核心接口

    一 Configuration接口 Configuration对象只存在于系统的初始化阶段.配置相关. 配置文件可以使用默认的路径,也可以指定路径. Configuration config = ne ...

  10. glance image-create --name "linux-core-mini-01" --file /cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --progress --visibility public

    glance image-create --name "linux-core-mini-01" --file /cirros-0.3.4-x86_64-disk.img --dis ...