使用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常见数据结构详解
Jul 24 Python
python命令行参数解析OptionParser类用法实例
Oct 09 Python
python连接oracle数据库实例
Oct 17 Python
初步讲解Python中的元组概念
May 21 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
Jan 21 Python
基于python中pygame模块的Linux下安装过程(详解)
Nov 09 Python
详解python中init方法和随机数方法
Mar 13 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
Aug 20 Python
python实现从ftp服务器下载文件
Mar 03 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
Jun 17 Python
python numpy中setdiff1d的用法说明
Apr 22 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
一个PHP模板,主要想体现一下思路
2006/12/25 PHP
使用PHP的日期与时间函数技巧
2008/04/24 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
2011/06/13 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
2012/12/21 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
2013/08/13 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
基于vue 实现token验证的实例代码
2017/12/14 Javascript
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
python Django模板的使用方法(图文)
2013/11/04 Python
浅析Python基础-流程控制
2016/03/18 Python
python中正则的使用指南
2016/12/04 Python
在python3环境下的Django中使用MySQL数据库的实例
2017/08/29 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
python基础教程项目五之虚拟茶话会
2018/04/02 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
代码详解django中数据库设置
2019/01/28 Python
Python实现FM算法解析
2019/06/18 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
2021/01/08 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
手工制作的意大利皮革运动鞋:KOIO
2020/01/05 全球购物
国家助学金获奖感言
2014/01/31 职场文书
关于运动会的口号
2014/06/07 职场文书
少先队活动总结
2014/08/29 职场文书
安全教育第一课观后感
2015/06/17 职场文书
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js