Django + PostgreSQL:填充范围内缺失的日期

2023-11-27

我有一张表,其中一列为date。每个日期可以有多个条目。

date         .....
-----------  -----
2015-07-20     ..
2015-07-20     ..
2015-07-23     ..
2015-07-24     ..

我想使用 Django ORM 和 PostgreSQL 作为数据库后端来获取以下形式的数据:

date         count(date)
-----------  -----------
2015-07-20        2
2015-07-21        0       (missing after aggregation)
2015-07-22        0       (missing after aggregation)
2015-07-23        1
2015-07-24        1

对应的 PostgreSQL 查询:

WITH RECURSIVE date_view(start_date, end_date) 
AS ( VALUES ('2015-07-20'::date, '2015-07-24'::date) 
     UNION ALL SELECT start_date::date + 1, end_date 
     FROM date_view 
     WHERE start_date < end_date ) 
SELECT start_date, count(date) 
FROM date_view LEFT JOIN my_table ON date=start_date 
GROUP BY date, start_date 
ORDER BY start_date ASC;

我在将此原始查询转换为 Django ORM 查询时遇到问题。

如果有人可以提供一个示例 ORM 查询(带/不带解决方法),那就太好了通用表表达式使用 PostgreSQL 作为数据库后端。

简单的理由已经引用了here:

我的偏好是在数据库中进行尽可能多的数据处理,而不是真正涉及的演示内容。我不羡慕在应用程序代码中执行此操作,只要它是一次数据库访问即可

As per 这个答案django 本身不支持 CTE,但答案似乎相当过时。

参考:

  • MySQL:即使没有记录,也选择范围内的所有日期

  • WITH 查询(公用表表达式)

Thanks


我不认为你可以用纯 Django ORM 来做到这一点,我什至不确定这是否可以通过extra()。 Django ORM 在处理日常事务方面非常出色,但对于更复杂的 SQL 语句和需求,尤其是 DBMS 特定的实现,它还不够成熟。你可能需要不断下降直接执行原始 SQL,或卸载由应用程序层完成的要求。

您始终可以使用 Python 生成缺失的日期,但如果元素的范围和数量很大,那么速度会非常慢。如果 AJAX 请求此用于其他用途(例如图表),那么您可以将其卸载到 Javascript。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django + PostgreSQL:填充范围内缺失的日期 的相关文章

随机推荐

  • 如何在U-Boot和Linux内核中添加自定义的ATAG变量?

    我要添加定制atagU Boot 和 Linux 内核中的变量 我怎样才能做到这一点 有没有什么程序可以添加ATAG变量在U Boot and Linux 最新的 Linux 内核正试图废弃ATAGS with 设备树 但是 那setup
  • 如何像 Instagram 和 Vine 一样在 ListView 中播放视频?

    我是 Android 开发新手 我正在尝试在列表视图中播放多个视频 目前 每个列表视图行项目都是一个视频视图 这种方法不起作用 因为当我开始滚动时 VideoViews 表现异常 我研究过here here here并发现VideoView
  • 获取绘图的只读属性名称列表

    如果要通过属性结构复制绘图 则需要过滤掉只读属性 例如 Annotation BeingDeleted Parent Type 有没有办法获取对象的只读属性列表 该问题源自一个相关问题 如何从绘图处理程序中绘图 我开始研究上一个问题 尝试动
  • 按行比较矩阵与向量中的元素

    我想将矩阵的值与相应的向量进行比较 比较应该按行进行 矩阵示例 ret TLT VTI 1995 01 20 0 005649718 0 004461441 1995 01 23 0 002840909 0 002560820 1995 0
  • 如何在 AWS Elastic Beanstalk 上使用 Resque 运行 Rails 后台作业?

    我正在运行我的 Rails 应用程序AWS 弹性豆茎平台 它运行具有 Auto Scaling 和 Elastic Load Balancing 的单个 EC2 实例 我想知道怎么跑resque delayed job or sidekic
  • mysql联合不同列数

    我知道联合查询必须具有相同数量的列 我正在尝试从表中获取结果comments以及表中的结果strings 它有多个连接 我如何正确地做到这一点 我还没有测试过 因为我知道我会收到不同数量的列的错误 这是我试图合并的两个查询 查询1 字符串
  • 如何使用TreeStore或TreeEditor组件更新数据?

    我使用 tree Panel 和 TreeStore 组件 我使用 JSON 文件来存储我的数据 但我想知道如何使用 TreeStore 升级我的数据 我解释我的问题 我的页面上有 2 个组件 Tree Panel用TreeStore和Pa
  • LinkedIn 的访问令牌更新流程可以在服务器上执行吗?

    在 Facebook 的 Graph API 中 一旦我们初步验证了用户身份 我们就可以直接与 API 从服务器 进行交互 以获得长期存在的页面访问令牌 这个长期存在的页面访问令牌永远不会过期 https developers facebo
  • 在 python opencv 中为像素着色

    我需要为图像中的像素着色 我使用opencv和python 我试过img x y 255 255 255 给一个上色pixel x y 但它不会工作 这其中是否有什么错误呢 你能建议任何方法吗 提前致谢 img x y 255 255 25
  • IF EXISTS UPDATE ELSE INSERT 语法错误

    我正在使用由我的 ISP 托管的 MySQL 5 1 这是我的查询 mysql query IF EXISTS SELECT FROM licensing active WHERE title 1 title 1 THEN BEGIN UP
  • 从内容页设置母版页上的属性值

    每次加载页面时 我都需要将数据传递给母版页中的变量 我在每个内容页面上设置了一个RequiredRoles 字符串 定义了访问该页面所需的角色 在我的母版页上 我有一种方法可以获取该数组 并检查当前用户是否属于这些角色中的一个或多个 我将如
  • 方法重载装饰器

    我正在尝试编写一个为 python 提供方法重载功能的装饰器 类似于中提到的PEP 3124 我编写的装饰器非常适合常规函数 但我无法让它适用于类中的方法 这是装饰器 class Overload object def init self
  • UI Router Extras 破坏了我的单元测试并出现意外结果错误?

    问题 安装 ui router extras 不是普通的 ui router 时 为什么我的测试失败 我该如何使用ui router extras我的测试仍然通过吗 如果你想快速安装 请使用 yeoman angular fullstack
  • 如何向单个客户端而不是所有客户端发送命令?

    我正在用 Indy 10 编写一个简单的客户端 服务器聊天程序 我的服务器 idtcpserver 向客户端发送一条命令 客户端应答 但是当连接多个客户端并且服务器发送命令时 all连接的客户端向服务器发送数据 如何向指定客户端而非全部客户
  • 限制 API 调用。仅允许我的移动应用程序

    我想要我的网络服务器接受请求起源仅从我的移动应用 由于移动应用程序是客户端应用程序 这意味着用户可以拥有二进制文件并反编译它 或者使用 Fiddler 等工具来解释 API 调用并重建它们 例如 在控制台应用程序中 所以我想要的是一种方法生
  • 有哪些好的方法可以防止 JavaScript 多人游戏作弊?

    想象一个带有滚动关卡的太空射击游戏 有哪些方法可以防止恶意玩家修改游戏以谋取私利 他可以做的服务器端难以限制的事情是自动瞄准 在可见区域外窥视 加速黑客攻击和其他事情 有哪些方法可以防止这种情况发生 假设服务器是任何语言 并且客户端通过 W
  • 故障模块:kernelbase.dll。应用程序崩溃

    I Have an application done in Net framework 3 5 C Net I installed the application in Windows 7 But while opening some fo
  • Enum.IsDefined 带有标记的枚举

    我目前正在看书C 4 0 简而言之顺便说一句 我认为这是一本很棒的书 即使对于高级程序员来说也可以作为很好的参考 我回顾了有关基础知识的章节 发现了一个技巧 可以在使用标记枚举时判断枚举中是否定义了某个值 书中指出 使用Enum IsDef
  • 为什么大写字母不能用于定义值的模式匹配?

    为什么我可以使用小写字母作为名称 val a bC 1 2 1 2 match case a bC gt 并且不能使用大写字母 compile errors not found value A BC val A BC 1 2 compile
  • Django + PostgreSQL:填充范围内缺失的日期

    我有一张表 其中一列为date 每个日期可以有多个条目 date 2015 07 20 2015 07 20 2015 07 23 2015 07 24 我想使用 Django ORM 和 PostgreSQL 作为数据库后端来获取以下形式