前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >测试开发进阶(二十三)

测试开发进阶(二十三)

作者头像
zx钟
发布2019-10-12 15:43:46
发布2019-10-12 15:43:46
34900
代码可运行
举报
文章被收录于专栏:测试游记测试游记
运行总次数:0
代码可运行

数据库操作

c(create)

  • 使用模型内构造方法
代码语言:javascript
代码运行次数:0
复制
def create(self, **kwargs):
    """
    Create a new object with the given kwargs, saving it to the database
    and returning the created object.
    """
    obj = self.model(**kwargs)
    self._for_write = True
    obj.save(force_insert=True, using=self.db)
    return obj

从代码中可以看出自带了 save操作

r(retrieve)

  • 获取一个数据表的所有数据

返回所有记录组成的模型和对象集合(queryset查询集)

  • 获取指定记录

get filter exclude

获取一个数据的所有记录

QuerySet查询集,就相当于一个列表(存放所有项目对象的列表)

对QuerySet查询集进行遍历

获取单个数据
代码语言:javascript
代码运行次数:0
复制
Projects.objects.get(id=1)
# 通过.可以获取到具体的内容
Projects.objects.get(id=1).name
Projects.objects.get(id=1).leader
  1. get返回多条记录会报错
  1. get查询的记录不存在会报出异常
获取某一些记录。filter()或者exclude()

filter查询返回的是一个列表

代码语言:javascript
代码运行次数:0
复制
Projects.objects.filter(id=1)
代码语言:javascript
代码运行次数:0
复制
Projects.objects.filter(leader='zx_94')
代码语言:javascript
代码运行次数:0
复制
Projects.objects.filter(leader__contains='zx')

使用 leader__contains获取符合条件的查询集「模糊查询」

还有一些其他的操作,可以根据名称或SQL常识进行使用

i开头(不是单词的一部分,例如 inis等)表示「忽略大小写」

exclude反向查询

下面可以获取到 id!=1的内容

代码语言:javascript
代码运行次数:0
复制
Projects.objects.exclude(id=1)
关联查询

查询语句:外键字段__从表的字段名__条件

tb_interfaces表中添加一条内容

代码语言:javascript
代码运行次数:0
复制
Projects.objects.filter(interfaces__name='登录接口')

通过 interfacesname「登录接口」来找到关联表中的具体内容

查看SQL语句

代码语言:javascript
代码运行次数:0
复制
from django.db import connection
print(connection.queries[-1])
{'sql': "SELECT `tb_projects`.`id`, `tb_projects`.`name`, `tb_projects`.`leader`, `tb_projects`.`tester`, `tb_projects`.`programer`, `tb_projects`.`publish_app`, `tb_projects`.`desc` FROM `tb_projects` INNER JOIN `tb_interfaces` ON (`tb_projects`.`id` = `tb_interfaces`.`project_id`) WHERE `tb_interfaces`.`name` = '登录接口'  LIMIT 21", 'time': '0.001'}
比较查询
代码语言:javascript
代码运行次数:0
复制
Projects.objects.filter(id__gt=2)

__gt:大于 __gte:大于等于 __lt:小于 __lte:小于等于

多条件 或 查询

以下语句表示查询 leader='zx'id=1的内容

代码语言:javascript
代码运行次数:0
复制
Projects.objects.filter(Q(leader='zx') | Q(id=1))

多条件 与 查询

代码语言:javascript
代码运行次数:0
复制
Projects.objects.filter(leader='zx', id=1)
查询集的操作

查询集相当于一个列表,支持列表中的大多数操作(索引,正向切片,for) 查询集是对数据库操作的一种优化 查询集会缓存结果

u(update)

先获取,后修改,再保存

代码语言:javascript
代码运行次数:0
复制
p = Projects.objects.get(id=1)
p.leader = 'zx'
p.save()

d(delete)

获取后,删除

代码语言:javascript
代码运行次数:0
复制
p = Projects.objects.get(id=1)
p.delete()

排序

从小到大

代码语言:javascript
代码运行次数:0
复制
Projects.objects.filter(id__gte=3).order_by('name')

从大到小

代码语言:javascript
代码运行次数:0
复制
Projects.objects.filter(id__gte=3).order_by('-name')

当前一个字段相同,以后一个来排序

代码语言:javascript
代码运行次数:0
复制
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/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试游记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • c(create)
  • r(retrieve)
    • 获取一个数据的所有记录
    • 获取单个数据
    • 获取某一些记录。filter()或者exclude()
    • 关联查询
    • 比较查询
    • 多条件 或 查询
  • 多条件 与 查询
    • 查询集的操作
  • u(update)
  • d(delete)
  • 排序
  • 阅读官方文档
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档