【问题标题】:Getting distinct columns from postgresql in django model在 django 模型中从 postgresql 获取不同的列
【发布时间】:2014-04-08 21:40:02
【问题描述】:

我有一个 postgresql 表,其中的列具有重复数据,例如使用 django 模型创建的:

为了获取列的不同值,我们使用类似这样的 postgre 命令:

SELECT distinct degree_code FROM studentapp_deg_course_cat

但我想使用 python 将这些数据作为数组获取。如何从 python 中的表的列中获取不同的对象?

【问题讨论】:

  • 从查询中获取任何数据的方式相同。仅仅因为它是 select distinct 并不会改变您检索它的方式。您将获得 0 行或更多行您获取和存储的数据。
  • 你能告诉我如何使用python获取数据吗?
  • 你想在 django 中还是在独立的 python 脚本中得到这个?
  • 我想把它放到 django 里面。

标签: python sql django postgresql


【解决方案1】:

在 django 中,您可以在查询模型时使用 distinct() 方法。

像这样的

models.YourModel.objects.order_by('degree_code').distinct('degree_code') 

当您使用 PostgreSQL 时,请注意文档中的状态

仅在 PostgreSQL 上,您可以在 为了指定 DISTINCT 应​​该到的字段的名称 申请。这将转换为 SELECT DISTINCT ON SQL 查询。这是 区别。对于普通的 distinct() 调用,数据库比较每个 在确定哪些行不同时,每行中的字段。为一个 distinct() 调用指定的字段名称,数据库将只 比较指定的字段名称。

【讨论】:

  • 这个操作相当于get操作吗?
  • no - 如果找到多个匹配项并且不返回 QuerySet 对象,get() 将引发异常,而 distinct() 返回可迭代的 QuerySet 对象。不过,它们都是 QuerySet API 的一部分,并且在您使用它们来访问存储在数据库中的数据的意义上是相似的。打开你的 django shell 试试看有什么不同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-15
  • 2019-06-15
  • 1970-01-01
  • 2013-11-21
  • 2020-09-19
  • 2020-11-04
相关资源
最近更新 更多