Django QuerySet API

数据库接口 QuerySet API

定义:
从数据库查询出来的结果一般是个集合,这个集合就是QuerySet

优点:
1、可切片:用来限制查询集记录的数目 。相当于SQL 的LIMIT 和OFFSET 子句。
2、可迭代:常用于for循环
3、惰性查询:创建查询集不会带来任何数据库的访问。你可以将过滤器保持一整天,直到查询集需要求值时,Django 才会真正运行这个查询。
4、缓存机制:在一个新创建的查询集中,缓存为空。首次对查询集进行求值 —— 同时发生数据库查询 ——Django 将保存查询的结果到查询集的缓存中并返回明确请求的结果(例如,如果正在迭代查询集,则返回下一个结果)。接下来对该查询集的求值将重用缓存的结果。
下面是 QuerySet 的常用方法,返回一个新的 QuerySet:

  • all
    查询所有在这里插入图片描述
  • get
    用来获取某一个对象,满足条件的出现多条数据就会报错
    在这里插入图片描述
  • filter
    查询满足条件的一些人,例如下图查询的name必须是jj,相当于Person.objects.filter(name__exact=“jj”)
    在这里插入图片描述
    iexact:不区分大小写
    在这里插入图片描述
    contains:包含
    在这里插入图片描述
    __regex:正则表达式查询
    在这里插入图片描述
  • exclude:排除符合某条件的,找出名称含有jj, 但是排除年龄是18岁的
    在这里插入图片描述
  • delete
    在这里插入图片描述
  • values_list
    获取元组形式结果
    在这里插入图片描述
  • values
    获取字典形式的结果
    在这里插入图片描述
    注意:
    1. values_list 和 values 返回的并不是真正的列表字典,也是 queryset,他们也是 lazy evaluation 的(惰性评估,通俗地说,就是用的时候才真正的去数据库查)
    2. 如果查询后没有使用,在数据库更新后再使用,你发现得到在是新内容!!!如果想要旧内容保持着,数据库更新后不要变,可以 list 一下
    3. 如果只是遍历这些结果,没有必要 list 它们转成列表(浪费内存,数据量大的时候要更谨慎!!!)
  • annotate
    – 聚合:sql中类似于group by
    – 求和:待讨论
    – 取平均值:待讨论
    在这里插入图片描述
    例:获取作者的名称及作者的文章数
    在这里插入图片描述
    参考:https://code.ziqiangxuetang.com/django/django-queryset-advance.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值