django1.11 数据库查询数据

  1. all()
    查询所有结果,结果是queryset类型
  2. filter(**kwargs)
    它包含了与所给筛选条件相匹配的对象,结果也是queryset类型 Book.objects.filter(title='linux',price=100)
    里面的多个条件用逗号分开,并且这几个条件必须都成立,是and的关系,or关系直接在这里写是搞不定or的,见后续
  3. get(**kwargs)
    返回与所给筛选条件相匹配的对象,不是queryset类型,是行记录对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。捕获异常try。 Book.objects.get(id=1)
  4. exclude(**kwargs)
    排除的意思,它包含了与所给筛选条件不匹配的对象,没有不等于的操作,用这个exclude,返回值是queryset类型 Book.objects.exclude(id=6),返回id不等于6的所有的对象,或者在queryset基础上调用,Book.objects.all().exclude(id=6)
  5. order_by(*field)
    对queryset类型的数据来调用,对查询结果排序,默认是按照id来升序排列的,返回值还是queryset类型
    models.Book.objects.all().order_by('price','id')
    直接写price,默认是按照price升序排列,按照字段降序排列,就写个负号就行了order_by(’-price’),order_by(‘price’,‘id’)是多条件排序,按照price进行升序,price相同的数据,按照id进行升序
  6. reverse()
    对queryset类型的数据来调用,对查询结果反向排序,返回值还是queryset类型
  7. count()
    对queryset类型的数据来调用,返回数据库中匹配查询(QuerySet)的对象数量。返回数字类型。
  8. first()
    queryset类型的数据来调用,返回第一条记录
    Book.objects.all()[0] = Book.objects.all().first()
    得到的都是model对象,不是queryset
    mysql语句limit 1来实现
  9. last()
    queryset类型的数据来调用,返回最后一条记录
    mysql语句倒序排列,然后limit 1来实现
  10. exists()
    queryset类型的数据来调用,如果QuerySet包含数据,就返回True,否则返回False。空的queryset类型数据也有布尔值True和False,但是一般不用它来判断数据库里面是不是有数据,如果有大量的数据,你用它来判断,那么就需要查询出所有的数据,效率太差了,用count或者exits; 例:all_books = models.Book.objects.all().exists() #翻译成的sql是SELECT (1) AS a FROM app01_book LIMIT 1,就是通过limit 1,取一条来看看是不是有数据
  11. values(*field)
    用的比较多,queryset类型的数据来调用,返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列,只要是返回的queryset类型,就可以继续链式调用queryset类型的其他的查找方法,其他方法也是一样的。
  12. values_list(*field)
    它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
  13. distinct()
    values和values_list得到的queryset类型的数据来调用,从返回结果中剔除重复纪录

注意:获取一条数据的函数,返回的是 结果,而不是结果集,例如:get(),first(),last()

update()只能应用于返回是结果集的语句
delete()可以应用于返回是结果或结果集的语句

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值