使用django的ORM框架按月统计近一年内的数据方法


Posted in Python onJuly 18, 2019

如下所示:

# 计算时间
time = datetime.datetime.now() - relativedelta(years=1)
# 获取近一年数据
one_year_data = Data.objects.filter(create_time__gte=time_ago)
# 分组统计每个月的数据
count_res = one_year_data\
			.annotate(year=ExtractYear('create_time'),month=ExtractMonth('create_time'))\
      .values('year', 'month').order_by('year', 'month').annotate(count=Count('id'))
print(count_res)

打印结果:

<QuerySet [{'year': 2018, 'month': 7, 'count': 3}, {'year': 2019, 'month': 5, 'count': 7}, {'year': 2019, 'month': 6, 'count': 161}]>

annotate()方法:

对数据集先进行分组然后再进行某些聚合操作或排序时,需要使用annotate方法来实现。与aggregate方法不同的是,annotate方法返回结果的不仅仅是含有统计结果的一个字典,而是包含有新增统计字段的查询集(queryset)。

以上这篇使用django的ORM框架按月统计近一年内的数据方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 调用DLL操作抄表机
Jan 12 Python
Python多线程学习资料
Dec 19 Python
Python程序中用csv模块来操作csv文件的基本使用教程
Mar 03 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
Apr 24 Python
python中类变量与成员变量的使用注意点总结
Apr 29 Python
django模板加载静态文件的方法步骤
Mar 01 Python
itchat-python搭建微信机器人(附示例)
Jun 11 Python
wxPython实现文本框基础组件
Nov 18 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
Mar 06 Python
Python getsizeof()和getsize()区分详解
Nov 20 Python
Python turtle实现贪吃蛇游戏
Jun 18 Python
python语言中pandas字符串分割str.split()函数
Aug 05 Python
Django框架之登录后自定义跳转页面的实现方法
Jul 18 #Python
django页面跳转问题及注意事项
Jul 18 #Python
django框架模板语言使用方法详解
Jul 18 #Python
Django中间件基础用法详解
Jul 18 #Python
Python编写通讯录通过数据库存储实现模糊查询功能
Jul 18 #Python
Django 实现图片上传和显示过程详解
Jul 18 #Python
Django框架模型简单介绍与使用分析
Jul 18 #Python
You might like
编写漂亮的代码 - 将后台程序与前端程序分开
2008/04/23 PHP
linux php mysql数据库备份实现代码
2009/03/10 PHP
PHP对MongoDB[NoSQL]数据库的操作
2013/03/01 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
2016/06/13 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
2017/08/04 PHP
PHP区块查询实现方法分析
2018/05/12 PHP
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
javascript解析json实例详解
2014/11/05 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
vue父组件向子组件动态传值的两种方法
2017/11/11 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
理解python多线程(python多线程简明教程)
2014/06/09 Python
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
2017/08/30 Python
Python实现的桶排序算法示例
2017/11/29 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
Django时区详解
2019/07/24 Python
Python使用get_text()方法从大段html中提取文本的实例
2019/08/27 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
python3.7添加dlib模块的方法
2020/07/01 Python
python中@contextmanager实例用法
2021/02/07 Python
.net软件工程师面试题
2015/03/31 面试题
EJB发布WEB服务一般步骤
2012/10/31 面试题
医学生求职自荐信
2013/10/25 职场文书
毕业生的自我评价分享
2013/12/18 职场文书
大学生蛋糕店创业计划书
2014/01/13 职场文书
合作经营协议书范本
2014/04/17 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
用JS写一个发布订阅模式
2021/11/07 Javascript