`

python之mongodb报表开发

 
阅读更多
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();










分享到:
评论

相关推荐

    mongodb开发精要 书籍 两本PDF

    1. CRUD操作:MongoDB提供了CRUD(Create、Read、Update、Delete)的基本操作,你可以使用Shell、各种语言驱动程序(如Python、Java、Node.js等)或者MongoDB的管理工具来执行这些操作。 2. 查询语言:MongoDB的查询...

    Python-iHealth项目的后台程序一个基于Django和MongoDB的Web后端

    【Python-iHealth项目的后台程序一个基于Django和MongoDB的Web后端】 iHealth项目是一个典型的结合了Python的Django框架和MongoDB数据库构建的Web应用程序。Django是Python领域内的一个强大且高效的Web开发框架,它...

    Python-djangomongodbengineDjangoMongoDB后端

    4. **聚合框架:** 提供了对MongoDB聚合框架的支持,允许开发者执行复杂的聚合查询,用于数据分析和报表生成。 5. **地理空间支持:** 支持MongoDB的地理空间索引和查询,便于地理位置相关的应用开发。 6. **全文...

    MongoDB的分析和报告的解决方案

    在数据存储领域,特别是对于JavaScript开发,MongoDB提供了一种高效且易于集成的解决方案。本文将深入探讨如何利用MongoDB进行数据分析和报告,并结合Databazel项目(尽管压缩包中的具体文件未给出详细信息,但我们...

    7_webstorm配置mongodb1

    2. 实时分析:MongoDB可以用于实时分析,例如实时监控、实时报表等。 3. 机器学习:MongoDB可以用于机器学习,例如数据预处理、模型训练等。 4. Web应用开发:MongoDB可以用于Web应用开发,例如存储用户信息、订单...

    MongoDB应用设计模式:MongoDB Applied Design Patterns

    - **驱动程序选择**:MongoDB支持多种语言的驱动程序,如Python、Java、Node.js等,选择合适的驱动有助于简化开发。 - **设计API**:如何设计RESTful API,使应用与MongoDB交互更高效、简洁。 - **错误处理与异常...

    MongoDB in action 源码

    10. 应用集成:源码可能包含了与多种编程语言(如Python、Java、Node.js等)集成的例子,展示了如何在实际项目中使用MongoDB驱动程序。 通过阅读和实践这些源码,读者能够加深对MongoDB工作原理的理解,掌握在实际...

    mongoDB内部分享和交流

    在"mongoDB内部分享和交流"这个主题中,我们可以深入探讨MongoDB的核心特性和在实际开发中的应用。 首先,MongoDB是基于键值对的NoSQL数据库,它的数据模型以JSON格式的文档为主,这使得数据的存储和查询更为直观和...

    基于Python开发网络运行日志收集整理系统设计与实现.zip

    标题中的“基于Python开发网络运行日志收集整理系统设计与实现”揭示了这个项目的核心内容,即使用Python编程语言来构建一个系统,该系统的主要功能是收集、整理网络运行过程中的日志数据。网络日志通常包含服务器...

    python学习之路 精

    在Web开发项目实践中,网站架构的理解、WSGI协议的知识、缓存机制的使用(如Redis)、NoSQL数据库(如MongoDB)的操作、以及大型网站的架构模式和高可用性的实现都是需要深入学习的重点。除此之外,系统管理方面,...

    mongodb-linux-x86_64-3.6.4.tgz

    对于开发者而言,学习使用MongoDB的驱动程序(如Node.js、Python、Java等)与之交互也是必不可少的。总的来说,MongoDB 3.6.4是企业级应用程序的强大数据库解决方案,提供了丰富的功能和优化,以满足现代数据管理的...

    Python3项目开发AI智能联系人管理的程序

    根据给定的信息,我们可以深入探讨如何使用Python 3开发一个基于人工智能(AI)技术的智能联系人管理系统。尽管描述中的信息较为简略且链接不可用,我们仍然可以从标题、描述和部分可用信息出发,构建一个关于如何...

    基于python与Flask的办公人员管理系统

    Python与Flask框架的结合,为开发高效、易用的办公管理系统提供了一种强大而灵活的解决方案。本系统充分利用了Python的简洁性和Flask的轻量级特性,实现了办公环境中的多种功能,如数据库操作、报表审批、日程管理、...

    MongoDB权威指南第2版

    9. 应用开发:书中还会介绍如何在各种编程语言(如Python、Java、Node.js等)中使用MongoDB驱动程序进行应用开发。 《MongoDB权威指南第2版》中的教程重要说明和更新链接可能包含最新版本的MongoDB特性、社区更新、...

    基于Python开发的志愿者时长管理系统

    常见的Python数据库库有SQLite(轻量级)、MySQL(关系型)或MongoDB(非关系型)。ORM(对象关系映射)工具如SQLAlchemy或PyMongo可以帮助简化数据库操作。 3. **用户认证与授权**:志愿者注册和登录功能需要用到...

    Python-FlaskPyMongo支持Flask应用的PyMongo

    **Python-FlaskPyMongo支持Flask应用的PyMongo** Flask-PyMongo是Python Flask框架的一个扩展,它为Flask...Flask-PyMongo不仅简化了数据库集成,还保持了Flask的轻量级特性,是Python Web开发中一个不可或缺的工具。

    MongoDB权威指南(中文版)

    在开发人员友好性方面,MongoDB提供了丰富的API和多种语言驱动程序,包括Python、Java、C#、Node.js等,使得在各种开发环境中集成MongoDB变得简单。它的查询语言类似于JavaScript,易于学习和使用,同时也支持聚合...

    MongoDB使用

    10. **MongoDB驱动**:MongoDB有多种编程语言的驱动程序,如Java、Python、Node.js等,使得开发人员能够轻松地在各种平台上集成MongoDB。 11. ** Atlas云服务**:MongoDB Atlas是官方提供的托管服务,让用户可以在...

    mongodb 权威指南

    《MongoDB权威指南》会讲解多种编程语言(如JavaScript、Python、Java等)与MongoDB交互的方法,帮助你轻松集成MongoDB到现有的应用程序中。同时,书中还会讨论如何使用Mongoose、PyMongo等流行的库来简化开发过程。...

    用Python自动办公,做职场高手补充教程.docx

    Python作为一种强大的编程语言,不仅可以用于复杂的软件开发,还能在日常办公中发挥巨大作用,提升工作效率。本教程将介绍如何利用Python来自动化处理Word、Excel和PowerPoint等办公软件,以及Python在爬虫领域的...

Global site tag (gtag.js) - Google Analytics