Django-ORM-单表API

一: 单表查询API

1.1 all

  • 通过管理器调用该api接口
  • 返回 QuerySet,是一个列表,列表的元素是model对象

范例

RackServer.objects.all()

 

1.2 filter(**kwargs)

  • 可以通过多个过滤条件
  • 返回QuerySet对象,元素是model对象
  • 条件之间是且的关系

范例

RackServer.objects.filter(vender='Dell PowerEdge R730')
RackServer.objects.filter(vender='Dell PowerEdge R730',rack_num='J032')

 

1.3 get

  • 由object管理器调用
  • 返回的是model对象,且对象有且只能有一个model,多或者少都会报错
ret = RackServer.objects.get(vender='Dell PowerEdge R730',SN='DL774N2')

 

1.4 exclude

  • 由object管理器调用
  • 查询除给定的条件之外的记录
  • 返回的是QuerySet
ret = RackServer.objects.exclude(vender='Dell PowerEdge R730')
# 对应以下SQL
WHERE NOT (`asserts_rackserver`.`vender` = 'Dell PowerEdge R730'

 

1.5 order_by

  • 对查询到的结果进行排序
  • 是QuerySet的方法
  • 返回的依然是QuerySet
# 正序
RackServer.objects.filter(rack_num='J032').order_by('asset_id')

WHERE `asserts_rackserver`.`rack_num` = 'J032' ORDER BY `asserts_rackserver`.`asset_id` ASC

# 倒叙
RackServer.objects.filter(rack_num='J032').order_by('-asset_id')

WHERE `asserts_rackserver`.`rack_num` = 'J032' ORDER BY `asserts_rackserver`.`asset_id` DESC

 

1.6 reverse()

  • 将查询的结果反转
  • 由QuerySet调用
  • 返回的QuerySet
RackServer.objects.filter(rack_num='J032').reverse()

 

1.7 count()

  • 由QuerySet调用,返回一个整型数据
  • 计数功能
RackServer.objects.filter(rack_num='J032').count()

 

1.8 first() 

  • 取第一个数据
  • 由querySet调用
  • 返回一个model对象
RackServer.objects.filter(rack_num='J032').first()

 

1.9 last()

  • 取最后一个数据
  • 由QuerySet调用
  • 返回最后一个model对象
RackServer.objects.filter(rack_num='J032').last()

 

1.10 exists()

  • 返回一个布尔值
  • 由QuerySet对象调用,如果QuerySet对象为空,则返回False,如果不为空则返回True

 

1.11  values()

  • 由QuerySet对象调用
  • 返回由字典组成的QuerySet对象
RackServer.objects.filter(rack_num='J032').values('management_ip','vender')

<QuerySet [{'management_ip': '192.168.77.125', 'vender': 'Dell PowerEdge R730'}]

 

1.12  values_list()

  • 由QuerySet对象调用
  • 返回由元祖组成的QuerySet对象
RackServer.objects.filter(rack_num='J032').values_list('management_ip')

<QuerySet [('192.168.77.125',), ('192.168.77.124',)]

 

1.13 distinct

  • 去重
  • 由values或者values_list返回的querySet对象调用
  • 返回的依然是queryset对象
RackServer.objects.filter(vender='Dell PowerEdge R730').values('rack_num').distinct()

 

 

二 模糊查询

 

2.1  in

  • 枚举条件,是指条件符合列表中的记录
  • 属性__in 后面是条件列表
RackServer.objects.filter(rack_num__in=['J032','J033'])

 

2.2 range

  • 和in用法一致
  • 属性__range
  • 不过取的是他们之前的值
RackServer.objects.filter(cpu_counts__range=[0,4])

 

2.3  gt/gte

  • 大于等于
RackServer.objects.filter(cpu_counts__gt=2)

 

2.4 lt/lte

  • 小于等于
RackServer.objects.filter(cpu_counts__lt=2)

 

2.5 startwith/istartwith/endwith/iendwith

  • 以什么开头或者结尾,不带i的区分大小写,带i区分大小写的
RackServer.objects.filter(system__startswith='CentOS')
RackServer.objects.filter(system__istartswith='centos').count()

 

2.6 contains/icontains

  • 包含。。。。
  • 前者区分大小写
  • 后者不区分大小写

 

RackServer.objects.filter(system__contains='CentOS').count()

 

RackServer.objects.filter(system__icontains='centos').count()

 

 

2.7 date__year /month/day

ackServer.objects.filter(Sv_Mte_start_date__year=2018).count()
RackServer.objects.filter(Sv_Mte_start_date__year=2018,Sv_Mte_stop_date__month=12).count()

 

posted @ 2019-08-01 16:44  择一事,终一生  阅读(90)  评论(0)    收藏  举报