测试开发进阶(二十三)
欢迎关注我的公众号:「测试游记」
数据库操作
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/
