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()

浙公网安备 33010602011771号