django ORM之 values和annotate使用
任务需求:项目中有个问题表,存储所有的问题,以
_id
为编号,由于_id
未做唯一校验,所以早期数据有多个问题使用同一编号的情况。需求就是找出编号有重复的数据,只保留第一个
开始之前
使用了values和annotate两个函数
简单的来说values
可以理解成展示models
指定列的值
annotate
起到了group by
的作用,
所以我做的事就是对指定字段按个数进行统计,然后留下重复编号的数据,进行清洗
- 看看数据库数据

- 查看每条数据的_id的值

- 对_id数据条数进行统计

- 转换数据格式为list

我只需要重复数据,所以把_id唯一的数据剔除
- 写个简单的遍历

-
然后只需要找到这些数据,对每个_id只留下第一条数据
-
导出sql,做个备份,开始删除数据
最终处理:

删除过程:

再回到网站看看数据清洗后的效果
