• django-数据库的查询集


    1.curd(增删改查)

    对于数据库,作为一名开发人员并不会感到陌生,那么数据库中的查询集是怎么一回事呢?

    2.数据库的查询集

    查询集这个概念存在django框架中,存在于ORM(object relational mapping)对象关系映射。当调用以下的过滤方法时,将会返回一个查询结果集

    • all():返回所有数据。
    • filter():返回满足条件的数据。
    • exclude():返回满足条件之外的数据。
    • order_by():对结果进行排序

    对查询集可以再次调用过滤器进行过滤,如:BookInfo.objects.filter(bread__gt=30).order_by('bpub_date')

    查询过滤器在这里的存在就是一种拥有限制条件的筛选器,通过零个、一个或者多个过滤器来对相对于的数据进行相对应的筛选,从而获取所需的数据

    从原生sql语句来说:从SQL的角度讲,查询集与select语句等价,过滤器像where、limit、order by子句

    判断某一个查询集中是否有数据:exists():判断查询集中是否有数据,如果有则返回True,没有则返回False。

    查询集的两大特性:

    (1)惰性查询

      当执行如下语句时,并未进行数据库查询,只是创建了一个查询集只有当执行的遍历迭代时,才算是查询了数据库。如只是建立了一个查询集qs = BookInfo.objects.all()  

    (2)缓存

      当第一次查询数据库时,会把查询的结果缓存下来,之后再次调用时,就会直接从缓存中调用,从而减少查询数据库的次数。 

      减少查询数据库次数的好处?数据库一旦查询次数增加,那么负载就会过高,容易产生问题

    可以对查询集进行切片和取下标等操作,等同于sql中的limit和offset子句。但是不支持负数索引操作,对查询集进行切片操作后,将会获得一个新的查询集,但是同理,也不会进行数据库的查询,仅仅是创建了一个查询集罢了。

    如果获取一个对象,直接使用[0],等同于[0:1].get(),但是如果没有数据,[0]引发IndexError异常,[0:1].get()如果没有数据引发DoesNotExist异常。

    示例:获取第1、2项,运行查看:qs = BookInfo.objects.all()[0:2]

  • 相关阅读:
    总结:使用pll来进行“异步复位,同步释放”
    总结“异步复位,同步释放”
    用quartusII再带的modelsim进行后仿真(时序仿真)的操作步骤
    Notepad++新建文件默认保存格式修改问题
    英语翻译正确的思维
    浅谈web网站架构演变过程
    MVC-API(二)
    C#面向对象编程的基础
    C# 堆栈讲解
    AutoCAD 2013 之R14版本下载地址整理汇总
  • 原文地址:https://www.cnblogs.com/zxh1297/p/9320055.html
Copyright © 2020-2023  润新知