Django跟某几个字段去重MySQL

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Django官方文档提供了使用distinct进行去重的操作,但是只支持`PostgreSQL`,具体操作可以看[官方文档],就不再过多赘述。这里写的是一种支持MySQL进行去重的操作。
  • Django官方文档提供了使用distinct进行去重的操作,但是只支持PostgreSQL,具体操作可以看官方文档,就不再过多赘述。这里写的是一种支持MySQL进行去重的操作。
  • 创建一个Book表

    from django.db import models
    
    class Book(models.Model):
        book_name = models.CharField(max_length=256, verbose_name='名称')
        category = models.CharField(max_length=256, verbose_name='类型')
        price = models.IntegerField(verbose_name="价格")
    )
  • 方案一,推荐方案,查询速度明显高于方案二。

    queryset = self.queryset.extra(where=[
            'book.id in (SELECT id FROM book WHERE category=Python GROUP BY price, book_name)'
        ])
  • 方案二,根据pricebook_name字段去重查询category为Python的数据

    queryset = Book.objects.filter(
        id__in=[i.id for i in Book.objects.raw(
            "SELECT * FROM book where category=%s GROUP BY price, book_name",
            ["Python"]
        )]
    )
  • 其实下面这一句查询条件就足够查到需要的数据,但是使用raw查出来的并不是一个QuerySet对象,想要继续在queryset的基础上继续查询,就需要再进行一次转换。

    queryset = Book.objects.raw("SELECT * FROM book where category=%s GROUP BY price, book_name", ["Python"])
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
存储 安全 网络协议
Python 教程之 Django(9)对模型中的字段进行验证
Python 教程之 Django(9)对模型中的字段进行验证
64 0
Python 教程之 Django(9)对模型中的字段进行验证
|
2月前
|
数据库 Python
django中的models.ManyToManyField 字段如何新增,通过Category,如何反向查询Product
django中的models.ManyToManyField 字段如何新增,通过Category,如何反向查询Product
69 10
|
4月前
|
存储 数据库 开发者
Django Web架构:全面掌握Django模型字段(下)
Django Web架构:全面掌握Django模型字段(下)
66 2
|
4月前
|
存储 数据处理 数据库
Django Web架构:全面掌握Django模型字段(上)
Django Web架构:全面掌握Django模型字段(上)
53 0
|
6月前
|
存储 SQL 数据处理
Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解
Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解
|
存储 数据库 Python
Python 教程之 Django(9)对模型中的字段进行验证
Python 教程之 Django(9)对模型中的字段进行验证
66 0
|
存储 前端开发 数据库
【Django学习】(十)模型序列化器_关联字段序列化
【Django学习】(十)模型序列化器_关联字段序列化
【Django学习】(十)模型序列化器_关联字段序列化
【Django学习】(九)自定义校验器_单字段_多字段校验_模型序列化器类
【Django学习】(九)自定义校验器_单字段_多字段校验_模型序列化器类
|
消息中间件 NoSQL 算法
Django 如何获取 Model 字段列表?
在平时的开发过程中,避免不了需要获取 Model 中的字段列表。
232 0
|
存储 JavaScript 前端开发
Django入门-5:模型的基本使用2-字段
Django入门-5:模型的基本使用2-字段
190 0
下一篇
DataWorks