查询

  • 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. Keras 可视化 model

    参考:https://keras.io/visualization/ error解决参考:http://blog.csdn.net/wangjian1204/article/details/50346 ...

  2. [LeetCode] Scramble String -- 三维动态规划的范例

    (Version 0.0) 作为一个小弱,这个题目是我第一次碰到三维的动态规划.在自己做的时候意识到了所谓的scramble实际上有两种可能的类型,一类是在较低层的节点进行的两个子节点的对调,这样的情 ...

  3. AndroidStudio设置“自动导入包”

    setting –-> Editor –-> General –-> Auto Inport 勾选这两项 单击 Apply –-> ok

  4. @Conditional注解的作用

    @Conditional是用有条件的加载bean. @Configuration public class TestBeanConfig { // 根据条件创建, 条件写在TestConditiona ...

  5. C++11: Multi-core Programming – PPL Parallel Aggregation Explained

    https://katyscode.wordpress.com/2013/08/17/c11-multi-core-programming-ppl-parallel-aggregation-expla ...

  6. POJ - 2376 Cleaning Shifts 贪心(最小区间覆盖)

    Cleaning Shifts Farmer John is assigning some of his N (1 <= N <= 25,000) cows to do some clea ...

  7. 51nod - 1659 - 数方块 - 简单数学

    https://www.51nod.com/Challenge/Problem.html#!#problemId=1659 随便弄了一下发现公式,然后从cheatsheet抄一抄平方和公式,发现可以提 ...

  8. html实现点击图片放大功能

    话不多说,直接上代码 <html> <head> <style> .over {position: fixed; left:0; top:0; width:100% ...

  9. 51nod 1011 【完全背包】

    完全背包的变形: 这些数字可以取多次,dp[i]代表前 i 物品组成N时的方案数. #include<iostream> #include<cstring> #include& ...

  10. CodeForces 653A【水】

    sort一发,去重 #include<cstdio> #include<iostream> #include<queue> #include<string.h ...