查询表记录

查询相关API

  1. 操作:models.表名.objects.方法()
  1. all(): 查询所有结果
  2.  
  3. filter(**kwargs): 它包含了与所给筛选条件相匹配的对象
  4.  
  5. get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,
  6. 如果符合筛选条件的对象超过一个或者没有都会抛出错误。
  7.  
  8. exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象
  9.  
  10. values(*field):     返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列
  11.              model的实例化对象,而是一个可迭代的字典序列
  12.  
  13. values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
  14.  
  15. order_by(*field): 对查询结果排序
  16.  
  17. reverse(): 对查询结果反向排序
  18.  
  19. distinct(): 从返回结果中剔除重复纪录
  20.  
  21. count():    返回数据库中匹配查询(QuerySet)的对象数量。
  22.  
  23. first(): 返回第一条记录
  24.  
  25. last(): 返回最后一条记录
  26.  
  27. exists():    如果QuerySet包含数据,就返回True,否则返回False

注意:一定区分object与querySet的区别 !!!

object,可以调用内部方法

而queryset则是一个集合  

双下划线之单表查询

  1. models.Tb1.objects.filter(id__lt=10, id__gt=1) # 获取id大于1 且 小于10的值
  2.  
  3. models.Tb1.objects.filter(id__in=[11, 22, 33]) # 获取id等于11、22、33的数据
  4. models.Tb1.objects.exclude(id__in=[11, 22, 33]) # not in
  5.  
  6. models.Tb1.objects.filter(name__contains="ven")
  7. models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感
  8.  
  9. models.Tb1.objects.filter(id__range=[1, 2]) # 范围bettwen and
  10.  
  11. startswithistartswith, endswith, iendswith 

  

  1. 示例:
  2. def query(request):
  3. #查询方法API:
  4.  
  5. #1 all方法:models.表名.objects.all()
  6. book_all=models.Book.objects.all() #结果是querySet集合
  7. # print(book_all)
  8.  
  9. #2 filter: models.表名.objects.filter()
  10. ret=models.Book.objects.filter(title='PHP') #结果是querySet集合
  11. ret2=models.Book.objects.filter(nid=1) #结果是querySet集合
  12. ret3=models.Book.objects.filter(author='Alex',price=35) #结果是querySet集合,且的关系,两个条件都要满足
  13. # print(ret)
  14. # 3 get:models.表名.objects.get()
  15. ret4=models.Book.objects.get(nid=3) #model对象,如果取不到值则会报错
  16. # print(ret4,ret4.price)
  17.  
  18. #4 exclude:排除条件,取非
  19. ret5 = models.Book.objects.exclude(author='oldboy')
  20.  
  21. #5 values方法
  22. # ret6=models.Book.objects.filter(author='Alex').values('title','price')
  23. # print('ret6',ret6)
  24. # #6 values_list方法
  25. # ret7 = models.Book.objects.filter(author='Alex').values_list('title', 'price')
  26. # print('ret7', ret7)
  27. # ret8 = models.Book.objects.filter(author='Alex').values('author').distinct()
  28. # print('ret8',ret8)
  29.  
  30. #双线划线
  31. ret9 = models.Book.objects.filter(price__gt=30)
  32. ret10 = models.Book.objects.filter(title__startswith='P')
  33. ret11 = models.Book.objects.filter(id_lt=4,id_gt=2) #id 大于2小于4
  34.  
  35. print('ret10',ret10)
  36.  
  37. return HttpResponse("OK")

  

Django视图之ORM数据库查询操作API的更多相关文章

  1. Django视图之ORM连表操作一

    1 项目路径结构树 2 models创建类 from django.db import models class UserType(models.Model): ''' 用户类型 ''' title ...

  2. ORM数据库查询操作之基于双下划线的跨表查询

     创建表结构 from django.db import models class Book(models.Model): title=models.CharField(max_length=32) ...

  3. Django的ORM常用查询操作总结(Django编程-3)

    Django的ORM常用查询操作总结(Django编程-3) 示例:一个Student model: class Student(models.Model): name=models.CharFiel ...

  4. Django框架05 /orm单表操作

    Django框架05 /orm单表操作 目录 Django框架05 /orm单表操作 1. orm使用流程 2. orm字段 3. orm参数 4. orm单表简单增/删/改 5. orm单表查询 5 ...

  5. Django 学习 之ORM聚合查询分组查询与F查询与Q查询

    一.聚合查询和分组查询 1.聚合查询aggregate 关于数据表的数据请见上一篇:Django 学习 之ORM多表操作(点我) aggregate(*args, **kwargs),只对一个组进行聚 ...

  6. Django框架06 /orm多表操作

    Django框架06 /orm多表操作 目录 Django框架06 /orm多表操作 1. admin相关操作 2. 创建模型 3. 增加 4. 删除 5. 修改 6. 基于对象的跨表查询 7. 基于 ...

  7. 数据库查询操作(fetchone,fetchall)

    数据库查询操作 Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据. fetchone(): 该方法获取下一个查询结果集.结果集是一个 ...

  8. django 中连接mysql数据库的操作步骤

    django中连接mysql数据库的操作步骤: 1 settings配置文件中 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mys ...

  9. django基础 -- 5. ORM 数据库操作

    一. ORM 对象关系映射 类   ------   表 类对象   ------   记录 类属性   ------   字段 二.  连接数据库配置 1.在  setting.py 文件中重新设置 ...

随机推荐

  1. HDOJ.2187 悼念512汶川大地震遇难同胞——老人是真饿了(贪心)

    悼念512汶川大地震遇难同胞--老人是真饿了 点我挑战题目 题目分析 每组数据给出所拥有的钱数,和大米的种类.每种大米给出单价(每单位重量)和大米的重量.求能买到的大米最大重量是多少? 采用贪心算法. ...

  2. cgroups 命令集

    cgroups 命令集 最后介绍,功能最为强大的控制组(cgroups)的用法.cgroups 是 Linux 内核提供的一种机制,利用它可以指定一组进程的资源分配. 具体来说,使用 cgroups, ...

  3. Codeforces Round #333 (Div. 2) B

    B. Approximating a Constant Range time limit per test 2 seconds memory limit per test 256 megabytes ...

  4. ubuntu18.04server设置静态IP

    16.04以后的版本配置静态IP是类似这样的文件 /etc/netplan/50-cloud-init.yaml 1.查询网卡名称 2.修改配置文件/etc/netplan/50-cloud-init ...

  5. JavaScript知识之判断字符串中出现最多的字符及次数

    var str = 'asdddasdfdseeeeeweeeeeeeeeeeee'; var json = {}; // 定义json一个对象 for(var i = 0; i < str.l ...

  6. 南阳ACM 题目275:队花的烦恼一 Java版

    队花的烦恼一 时间限制:3000 ms  |  内存限制:65535 KB 难度:1 描述 ACM队的队花C小+经常抱怨:"C语言中的格式输出中有十六.十.八进制输出,然而却没有二进制输出, ...

  7. Scala环境安装设置

    Scala语言可以安装在任何类UNIX或Windows系统.要安装Scala,必须先安装Java1.5或更高版本安装在计算机上. Windows上安装Scala: 步骤(1):JAVA设置: 首先,必 ...

  8. UIToolBar的半透明属性设置

      UIToolBar的半透明属性设置style:Translucent(Ps:长得很像翻译translation)   https://www.evernote.com/shard/s227/sh/ ...

  9. 什么是AMD规范

    AMD规范全称是Asynchronous Module Definition,即异步模块加载机制.从它的规范描述页面看,AMD很短也很简单,但它却完整描述了模块的定义,依赖关系,引用关系以及加载机制. ...

  10. 用python玩微信(聊天机器人,好友信息统计)

    1.用 Python 实现微信好友性别及位置信息统计 这里使用的python3+wxpy库+Anaconda(Spyder)开发.如果你想对wxpy有更深的了解请查看:wxpy: 用 Python 玩 ...