ORM查询的13种方法:

必知必会13条

<1> all():                 查询所有结果

<2> filter(**kwargs):      它包含了与所给筛选条件相匹配的对象

<3> get(**kwargs):         返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。

<4> exclude(**kwargs):     它包含了与所给筛选条件不匹配的对象

<5> values(*field):        返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列

<6> values_list(*field):   它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列

<7> order_by(*field):      对查询结果排序

<8> reverse():             对查询结果反向排序,请注意reverse()通常只能在具有已定义顺序的QuerySet上调用(在model类的Meta中指定ordering或调用order_by()方法)。

<9> distinct():            从返回结果中剔除重复纪录(如果你查询跨越多个表,可能在计算QuerySet时得到重复的结果。此时可以使用distinct(),注意只有在PostgreSQL中支持按字段去重。)

<10> count():              返回数据库中匹配查询(QuerySet)的对象数量。

<11> first():              返回第一条记录

<12> last():               返回最后一条记录

<13> exists():             如果QuerySet包含数据,就返回True,否则返回False

具体代码示例:

 """

 ORM小练习

 """

 import os

 if __name__ == '__main__':
#加载Djang00项目的配置信息
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ormday69.settings")
#导入Django,并启动Django项目
import django
django.setup() from app01 import models
#查询所有的人
ret = models.Person.objects.all()
print(ret)
#get查询
ret = models.Person.objects.get(name="小黑")
print(ret)
#filter
ret = models.Person.objects.filter(id=100)#不存在返回一个空的QuerySet,不会报错
print(ret)
# 就算查询的结果只有一个,返回的也是QuerySet,我们要用索引的方式取出第一个元素
ret = models.Person.objects.filter(id=1)[0]
print(ret)
print("exclude".center(80,"*"))
#exclude
ret = models.Person.objects.exclude(id=1)
print(ret)
print("values".center(80,'*'))
#values 返回一个QuerySet对象,里面都是字典。不写字段名,默认查询所有的字段
ret = models.Person.objects.values("name","birthday")
print(ret)
print("values_lisst".center(80,'*'))
#values 返回一个QuerySet对象,里面都是元组。不写字段名,默认查询所有的字段
ret = models.Person.objects.values_list("name","birthday")
print(ret)
print("order_by".center(80, '*'))
#order_by按照指定的字段排序
ret = models.Person.objects.all().order_by("birthday")
print(ret)
print("reverse".center(80, '*'))
# reverse 将一个有序的QuerySet 反转顺序
#对有序的QuerySet才能调用reverse
ret = models.Person.objects.all().order_by("birthday").reverse()
print(ret)
print("first".center(80, '*'))
#first 返回QuerySet中的第一个对象
ret = models.Person.objects.all().first()
print(ret)
print("last".center(80, '*'))
# last 返回QuerySet中的最后一个对象
ret = models.Person.objects.all().last()
print(ret)
print("exists".center(80, '*'))
# exists 判断表里面有没有数据
ret = models.Person.objects.exists()
print(ret)

最新文章

  1. Android下的屏幕适配
  2. sqlmap用户手册 | WooYun知识库
  3. 黄聪:《跟黄聪学WordPress主题开发》
  4. android动态增加控件时控制样式的方法
  5. 通过redis-rdb-tools分析redis内存使用量
  6. VirtualBox添加共享文件夹
  7. 【jQueryMobile】Helloworld而页面切换
  8. IE6下不能定义1px高度的容器和IE6 双边距
  9. 记WebUtility.HtmlDecode将&amp;nbsp;转成特殊空格的问题
  10. JS中的异步以及事件轮询机制
  11. Java反射机制剖析(一)-定义和API
  12. EasuUI-js(EasyUI formatter格式化教程) 判断常用:
  13. Python将纳入高考?
  14. ACache【轻量级的开源缓存框架】
  15. Asp.net Mvc 与WebForm 混合开发
  16. Android 8.0 无法收到broadcast
  17. pip命令
  18. python3 deque(双向队列)
  19. centos7 Linux 安装jdk1.8
  20. 使用openssl在windows 10下本地xampp配置https开发环境

热门文章

  1. redis异常-MISCONF Redis is configured to save RDB snapshots
  2. spring的基于xml的AOP配置案例和切入点表达式的一些写法
  3. 备忘录模式(Memento、Originator、Caretaker)(状态保存,备份恢复)
  4. python基础--类的基础使用
  5. expect.js
  6. 陈云川的OPENLDAP系列
  7. web前端学习(四)JavaScript学习笔记部分(2)-- JavaScript语法详解
  8. 开源PaaS平台:Cloudify
  9. tablespaces
  10. Servlet表单处理