美文网首页
查询操作

查询操作

作者: 想旅游的程序员 | 来源:发表于2018-10-12 15:18 被阅读0次

    [TOC]

    查询操作

    查询数据的操作一般都是数据操作中比较复杂的一部分,针对不同那个的操作方式进行分类讲解,为了方便进行快速的操作,我们通过Django提供的一个shell测试命令进行处理

    进入项目主目录文件夹,运行如下命令进入项目测试命令行
    python manager.py shell
    此时就进入了sehll环境,我们进行各种操作即可

    #引入blog下的models模块
    >>> from blog import models
    #添加一个新用户
    >>> user = models.User(name='test',nickname='test',age=23)
    #进行保存
    >>> user.save()
    

    这样就增加了一条数据,如果要删除,则调用删除方法

    >>> user.delete()
    (1,{'blog.Article':0,'blog.User':1})
    

    查询多条数据

    • all()查询全部数据
    • filter([condition])查询指定条件数据,如果没有指定条件,等同于all()
    • exclude([condition])查询指定条件之外的数据,如果没有指定条件,等同于all()
    • order_by()根据指定的字段进行排序查询,字段前面添加符号'-'表示倒序
    • values()将查询到的数据转换成字典,保存在列表中返回

    all的使用

    >>> models.User.objects
    <django.db.models.manager.Manager object at 0x000000003C759E8>
    >>> users = models.User.objects
    >>> all = users.all()
    >>> all
    #返回所有的用户信息
    <QuerySet [<User:User object>,<User:User object>,<User:User object>]>
    #查询第一个用户的用户名
    >>> all[0].name
    'zhengyuchao'
    
    >>>for u in all:
    ...     print(u.name,u.nickname,u.age)
    ...
    zhengyuchao 郑玉超 23
    yaojuan 大娟 23
    

    all方法返回所有数据,相当于查询所有数据。注意返回的是一个QuerySet的查询集合,如果需要取值,则需要通过下标索引查找

    filter方法获取符合条件的QuerySet

    图片.png

    大部分情况来说pk和id是一样的,我们知道pk代表primary key的缩写,也就是任何model中都有的主键,那么id呢,大部分时候也是model的主键,所以在这个时候我们可以认为pk和id是完全一样的。

    exclude方法查找条件不符合的,和filter方法正好相反

    图片.png

    order_by()方法

    根据传递的属性名称进行排序,如果属性前加一个-(负号),则表示倒序排列,否则正序排列


    图片.png

    values()方法

    将查询到的数据转换成字典,保存在列表中


    图片.png

    查询一条数据

    get([condition])查询指定条件的数据,返回0条或者多条都会出现异常

    • count()返回查询到的结果的总数
    • first()返回查询到的第一条数据
    • last()返回查询到的最后一条数据
    • exists()判断查询结果中是否包含数据

    get()方法

    图片.png

    注意:get方法和filter方法的区别,主要由两点区别

    1. get获取的是一个对象、而filter获取的是一个列表
    2. get如果获取不到值(没有条件符合),则报错,而filtr会返回一个空列表

    count()方法

    count方法,返回符合条件的数量。


    图片.png

    first方法和last方法

    返回符合条件的第一条和最后一条


    图片.png

    exists()方法

    判断符合条件的数据是否存在


    图片.png

    条件查询

    • 相等条件查询 key=value
    • 包含条件查询 key_contains=value:模糊查询like
    • 开头结尾查询 key__startswith key__endswith=value
    • 是否为空查询 key__isnull=True key__isnotnull=True
    • 范围查询 key__in=[1,2,3,4,5,6,7]
    • 关系查询
      • key__gt=1 大于1
      • key__gte=1 大于等于1
      • key__ly=1 小于1
      • key__lte=1 小于等于1
      • 日期查询[year/month/day/week_day/hour/minute/second]
      • key__year=2014


        图片.png
    图片.png

    多条件查询Q

    使用filter进行多次过滤或者在一个filter中通过都好间隔多个提交。


    图片.png

    如果是或者的关系,Django为我们提供了一个比较好用的Q,完成多条件的查询,使用Q对象,首先需要引入Q对象,有了 Q 对象后,我们就可以多条件的查询了,不管是并且、或者、非的逻辑都可以完成了。这个就是查询对象 Q。

    图片.png

    查询原值对象F

    可能需要将一些原有的数据可额能进行操作,如年龄加一。


    图片.png

    传统的手段,我们需要先查询出这个对象,之后在该对象的age加一,之后在保存这个对象,完成数据的更新,比较麻烦
    Django针对这种情况,为大家设计了一个F对象,这个对象可以很快的查询出原有对象的值

    图片.png

    返回的 1 表示有一条数据被更新了。F 对象在我们进行 Django 数据查询的时候,能够辅助我们快速取到对象原有的值,方便我们进行各种操作。所以 F 对象是原有值对象。

    相关文章

      网友评论

          本文标题:查询操作

          本文链接:https://www.haomeiwen.com/subject/xclgaftx.html