`

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是企业级应用程序的强大数据库解决方案,提供了丰富的功能和优化,以满足现代数据管理的...

    数据库_MongoDB_驱动_PyMongo_1741401315.zip

    在开发中使用PyMongo,开发者可以利用Python的易用性和表达力,结合MongoDB的灵活性和扩展性,构建出高效、可维护的应用程序。它特别适合于那些需要快速开发和迭代的应用场景,例如内容管理系统、分析和报表工具、...

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

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

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

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

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

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

    基于Python开发的SaaS任务管理平台设计源码

    本文将探讨一个基于Python开发的SaaS任务管理平台设计源码,涉及其技术架构、功能模块以及设计理念等方面。 首先,从技术架构的角度来看,该平台采用Python语言进行开发,这是因为它具有简洁明了的语法和强大的社区...

    Python-FlaskPyMongo支持Flask应用的PyMongo

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

    MongoDB使用

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

    基于python的股票量化系统(采集保存数据+分析数据+可视化+深度学习).zip

    本套系统以Python为开发语言,综合运用了数据采集、数据保存、数据分析、可视化以及深度学习技术,提供了一个全面的量化交易学习和实践平台。 首先,数据采集模块主要负责收集股票市场数据,包括股票价格、成交量、...

    mongodb 权威指南

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

Global site tag (gtag.js) - Google Analytics