zoukankan      html  css  js  c++  java
  • django,数据库所有的查询方法

    Django ORM 模糊查询和查询操作

     

    queryset中支持链式操作

    book=Book.objects.all().order_by('-nid').first()

    只要返回的是queryset对象就可以调用其他的方法,直到返回的是对象本身

     

    模糊查询常用的操作

    大于、大于等于:

    __gt 大于> 
    __gte 大于等于>=

    Student.objects.filter(age__gt=10) // 查询年龄大于10岁的学生
    Student.objects.filter(age__gte=10) // 查询年龄大于等于10岁的学生

    特别注意:这里的下划线是双下划线,下面将介绍的也都是双下划线。
    小于、小于等于:

    __lt 小于<
    __lte 小于等于<=

    Student.objects.filter(age__lt=10) // 查询年龄小于10岁的学生
    Student.objects.filter(age__lte=10) // 查询年龄小于等于10岁的学生
    like:

    __exact 精确等于 like 'aaa'
    __iexact 精确等于 忽略大小写 ilike 'aaa'
    __contains 包含 like '%aaa%'
    __icontains 包含,忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。
    in:

    __in

    查询年龄在某一范围的学生
    Student.objects.filter(age__in=[10, 20, 30])
    is null / is not null:

    __isnull 判空

    Student.objects.filter(name__isnull=True) // 查询用户名为空的学生
    Student.objects.filter(name__isnull=False) // 查询用户名不为空的学生
    不等于/不包含于:

    Student.objects.filter().excute(age=10) // 查询年龄不为10的学生
    Student.objects.filter().excute(age__in=[10, 20]) // 查询年龄不在 [10, 20] 的学生
    其他常用模糊查询:

    __startswith 以…开头
    __istartswith 以…开头 忽略大小写
    __endswith 以…结尾
    __iendswith 以…结尾,忽略大小写
    __range 在…范围内
    __year 日期字段的年份
    __month 日期字段的月份
    __day 日期字段的日

    Book.objects.filter(create_time__year=2019, create_time__month=4).all()

    如果是mysql数据库settings里面修改    USE_TZ = False

    多表连接查询:

     class A(models.Model):
        name = models.CharField(u'名称')
     class B(models.Model):
        aa = models.ForeignKey(A)

    B.objects.filter(aa__name__contains='searchtitle')#查询B表中外键aa所对应的表中字段name包含searchtitle的B表对象。

    查询API

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <1all():                  查询所有结果
      
    <2filter(**kwargs):       它包含了与所给筛选条件相匹配的对象
      
    <3> get(**kwargs):          返回与所给筛选条件相匹配的对象,返回结果有且只有一个,
                                如果符合筛选条件的对象超过一个或者没有都会抛出错误。
      
    <4> exclude(**kwargs):      它包含了与所给筛选条件不匹配的对象
     
    <5> order_by(*field):       对查询结果排序  用法:order_by('-price')        DESC 降序
      
    <6> reverse():              对查询结果反向排序
      
    <8> count():                返回数据库中匹配查询(QuerySet)的对象数量。
      
    <9> first():                返回第一条记录
      
    <10> last():                返回最后一条记录
      
    <11> exists():              如果QuerySet包含数据,就返回True,否则返回False         相当于limit 1(用途查询这个表中是否有值)
     
    <12> values(*field):        用法:Book.objects.all.values('title','price')  返回值是<queryset[{'title':'aa','pirce':12},{}]
     
    <13> values_list(*field):   用法:Book.objects.all.values_list('title','price')  返回值是<queryset[('aa',12),('bb',33)]
    <14> distinct():            从返回结果中剔除重复纪录  用法:Book.objects.all.values('title','price').distinct()   
                                错误用法 Book.objects.all.distinct()  因为id不相同,其他相同,无法去重 
  • 相关阅读:
    codeforces C. Cows and Sequence 解题报告
    codeforces A. Point on Spiral 解题报告
    codeforces C. New Year Ratings Change 解题报告
    codeforces A. Fox and Box Accumulation 解题报告
    codeforces B. Multitasking 解题报告
    git命令使用
    shell简单使用
    知识束缚
    php 调用系统命令
    数据传输方式(前端与后台 ,后台与后台)
  • 原文地址:https://www.cnblogs.com/yangxinpython/p/11900215.html
Copyright © 2011-2022 走看看