1、python中定义父类base.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import ConfigParser
import pymongo
import Constants
import abc
import mongodbInit
from jshy import excelManager
class DataCollectBase(object):
_metaclass__ = abc.ABCMeta
@abc.abstractproperty
def currentTable(self):
"""
定义当前操作表
"""
raise NotImplementedError
def __init__(self):
self.client = mongodbInit.MongodbData();
self.db = self.client.db;
self._currentTable = self.currentTable();
"""
启动任务:用来生成报表数据
"""
def start(self):
"""
实现启动
"""
self.client.exists_dropTable(self._currentTable)
# 正式表,不存在则创建
self.client.not_exists_createTable(self._currentTable);
# 查询日志中的mac和sn用户数据,保存到临时表
self.generateTableData();
print "生成报表数据:%s" %self._currentTable
"""生成数据报表接口"""
@abc.abstractmethod
def generateTableData(self):
"""数据表处理中心"""
raise NotImplementedError
def out_excel(self,filename,titlerow,query={},project={},**methodDict):
obj = None;
if len(project) > 0:
cursor = self.db[self._currentTable].find(query, project);
else:
cursor = self.db[self._currentTable].find(query);
# result = result.sort(methodDict["sort"])
if len(methodDict) > 0:
for key in methodDict:
if hasattr(cursor ,key):
func= getattr(cursor,key);
cursor =func(methodDict[key])
result = cursor ;
excelManager.generate_excel(rows=result,titleRow=titlerow,filename=filename)
2、定义数据报表total_package_day_active.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from jshy import dataManagerCenter
from jshy import excelManager
from jshy.Base import DataCollectBase
__author__ = "jiandequn"
import mongodbInit
""""聚视各套餐分别的日活跃度"""
class TotalPackageDayActive(DataCollectBase):
def currentTable(self):
return "total_package_day_active";
"""
创建临时数据表并读取日志表中数据,进行格式化处理,将临时表数据插入到正式表中
"""
def generateTableData(self):
group = {"_id":{
"mac":'$mac',
"sn":'$sn',
"package_type":"$package_type",
"day_time":{"$substrBytes": ["$time", 0, 10]},
}
};
group1 = {"_id":{'day_time':'$_id.day_time',"package_type":"$_id.package_type"},
"userCount":{'$sum':1}
};
temp_result = self.db[dataManagerCenter.opentAction_table].aggregate(
[
# {"$match": match},
{"$group":group},
{"$group": group1},
{"$project": {
"_id": 0,
"package_type": "$_id.package_type",
"day_time": "$_id.day_time",
"userCount": 1
}
},
{"$out": self._currentTable}]);
return temp_result;
def excel(self):
filename = '总套餐日活跃度.xls';
titleRow = [{"package_type": "套餐类型"},
{"day_time": "日期"},
{"userCount": "总用户数量"}];
self.out_excel(filename,titleRow,sort=[("day_time",1),("package_type",1),("userCount",1)])
if __name__ == "__main__":
TotalPackageDayActive().start();
分享到:
相关推荐
基于python与Flask的办公管理系统,包含数据库增删改查。直接启动能够运行,并且界面很好看,支持报表审批、日程管理、人员管理、公告分布、站内信等功能
该项目利用了基于springboot + vue + mysql的开发...Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
【博客个人资源】 包含前端、后端、移动开发、操作...Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
该项目利用了基于springboot + vue + mysql的开发...Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
该项目利用了基于springboot + vue + mysql的开发...Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
某在线中药店销售数据统计与分析系统是一个利用Python开发的项目,旨在为在线中药店提供销售数据的统计和分析服务。该系统能够收集和处理销售数据,帮助店主和管理者更好地理解业务状况、顾客需求以及市场趋势。 ...
`mall-admin-web`是一个电商后台管理系统的前端企业...Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
Lepus(天兔)数据库企业监控系统是一套由专业DBA针对互联网企业开发的一款专业、强大的企业数据库监控管理系统,企业通过Lepus可以对数据库的实时健康和各种性能指标进行全方位的监控。目前已经支持MySQL、Oracle、...
主要是以Django作为基础框架,采用MTV模式,数据库使用MongoDB、MySQL和Redis,以从豆瓣平台爬取的电影数据作为基础数据源,主要基于用户的基本信息和使用操作记录等行为信息来开发用户… 管理系统是一种通过计算机...
DataX Web是在DataX之上开发的分布式数据同步工具,提供简单易用的操作界面,降低用户使用DataX的学习成本,缩短任务配置时间,避免配置过程中出错。用户可通过页面选择数据源即可创建数据同步任务,RDBMS数据源可...
运维便捷:支持在线日志功能,执行器产生的日志可以在前端控制台页面实时显示,降低debug成本,极大地提高开发效率。 依赖精简:最小仅依赖关系型数据库(MySQL/Oracle/MS SQLServer...),扩展依赖为MongoDB(用于...