测试开发进阶(二十三)
欢迎关注我的公众号:「测试游记」
数据库操作
c(create)
- 使用模型内构造方法
1 | def create(self, **kwargs): |
从代码中可以看出自带了save
操作
r(retrieve)
- 获取一个数据表的所有数据
返回所有记录组成的模型和对象集合(queryset查询集)
- 获取指定记录
get
filter
exclude
获取一个数据的所有记录
QuerySet查询集,就相当于一个列表(存放所有项目对象的列表)
对QuerySet查询集进行遍历
获取单个数据
1 | Projects.objects.get(id=1) |
- get返回多条记录会报错
- get查询的记录不存在会报出异常
获取某一些记录。filter()或者exclude()
filter
查询返回的是一个列表
1 | Projects.objects.filter(id=1) |
1 | Projects.objects.filter(leader='zx_94') |
1 | Projects.objects.filter(leader__contains='zx') |
使用leader__contains
获取符合条件的查询集「模糊查询」
还有一些其他的操作,可以根据名称或SQL常识进行使用
以i
开头(不是单词的一部分,例如in
,is
等)表示「忽略大小写」
exclude
反向查询
下面可以获取到id != 1
的内容
1 | Projects.objects.exclude(id=1) |
关联查询
查询语句:外键字段__从表的字段名__条件
在tb_interfaces
表中添加一条内容
1 | Projects.objects.filter(interfaces__name='登录接口') |
通过interfaces
的name
「登录接口」来找到关联表中的具体内容
查看SQL语句
1 | from django.db import connection |
比较查询
1 | Projects.objects.filter(id__gt=2) |
__gt
:大于
__gte
:大于等于
__lt
:小于
__lte
:小于等于
多条件 或 查询
以下语句表示查询leader='zx'
或id=1
的内容
1 | Projects.objects.filter(Q(leader='zx') | Q(id=1)) |
多条件 与 查询
1 | Projects.objects.filter(leader='zx', id=1) |
查询集的操作
查询集相当于一个列表,支持列表中的大多数操作(索引,正向切片,for)
查询集是对数据库操作的一种优化
查询集会缓存结果
u(update)
先获取,后修改,再保存
1 | p = Projects.objects.get(id=1) |
d(delete)
获取后,删除
1 | p = Projects.objects.get(id=1) |
排序
从小到大
1 | Projects.objects.filter(id__gte=3).order_by('name') |
从大到小
1 | Projects.objects.filter(id__gte=3).order_by('-name') |
当前一个字段相同,以后一个来排序
1 | Projects.objects.filter(id__gte=3).order_by('name','-publish_app') |
阅读官方文档
https://docs.djangoproject.com/en/2.2/
「Tutorials」入门:https://docs.djangoproject.com/en/2.2/intro/
「Topic guides」专题:https://docs.djangoproject.com/en/2.2/topics/
「Reference guides 」接口:https://docs.djangoproject.com/en/2.2/ref/
「How-to guides 」进阶内容:https://docs.djangoproject.com/en/2.2/howto/