#$cat SpeechMongoHandle.py
from pymongo import Connection
import time
import datetime # CTRL_A='\x01'
# CTRL_B='\x02' CTRL_A='--' def getEveryDay(begin_date,end_date):
date_list = []
begin_date = datetime.datetime.strptime(begin_date, "%Y-%m-%d")
end_date = datetime.datetime.strptime(end_date,"%Y-%m-%d")
while begin_date < end_date:
# date_str = begin_date.strftime("%Y-%m-%d")
mid_date = begin_date + datetime.timedelta(days=1)
tup = (str(begin_date),str(mid_date))
date_list.append(tup)
begin_date = mid_date
return date_list
days = getEveryDay('2017-01-01','2017-01-02') # MongoDB Connect
client = Connection('syslog-1',27017)
db_name = 'service'
db = client[db_name]
collection = db.speech for day in days:
tmpArray0 = time.strptime(str(day[0]), "%Y-%m-%d %H:%M:%S")
tmpArray1 = time.strptime(str(day[1]), "%Y-%m-%d %H:%M:%S")
timestamp0 = int(time.mktime(tmpArray0)*1000)
timestamp1 = int(time.mktime(tmpArray1)*1000)
print day
print (timestamp0,timestamp1) results = collection.find({"time":{'$gte':timestamp0,'$lt':timestamp1}}) for res in results:
keys = res.keys()
if "time" in keys:
unixtimestamp = str(int(res["time"]))
timetemp = time.localtime(int(unixtimestamp)/1000)
thedate = time.strftime("%Y-%m-%d %H:%M:%S", timetemp)
if "id" in keys:
sn = res["id"]
if "asr" in keys:
asr = res["asr"]
if "nlp" in keys:
nlp = res["nlp"]
if "domain" in keys:
domain = res["domain"]
if "intent" in keys:
intent = res["intent"] print thedate + CTRL_A + sn + CTRL_A + asr + CTRL_A + nlp + CTRL_A + domain + CTRL_A + intent

应对场景为:MongoDB中历史数据巨多接近一年多,需要想办法将数据读出并且格式化上传到集群上。就想出了按天读取数据

或许还有最优解。。。

Python从MongoDB中按天读取数据并格式化日志的更多相关文章

  1. python之从文件中按行读取数据

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = 'jiangwenwen' # 从文件中按行读取数据 file = open(& ...

  2. struts2中从后台读取数据到<s:select>

    看到网上好多有struts2中从后台读取数据到<s:select>的,但都 不太详细,可能是我自己理解不了吧!所以我自己做了 一个,其中可能 有很多不好的地方,望广大网友指出 结果如图 p ...

  3. python操作MONGODB数据库,提取部分数据再存储

    目标:从一个数据库中提取几个集合中的部分数据,组合起来一共一万条.几个集合,不足一千条数据的集合就全部提取,够一千条的就用一万减去不足一千的,再除以大于一千的集合个数,得到的值即为所需提取文档的个数. ...

  4. 使用aggregate在MongoDB中查找重复的数据记录

    我们知道,MongoDB属于文档型数据库,其存储的文档类型都是JSON对象.正是由于这一特性,我们在Node.js中会经常使用MongoDB进行数据的存取.但由于Node.js是异步执行的,这就导致我 ...

  5. Python(Redis 中 Set/Zset 类型数据和其他操作)

    1.redis 基本操作命令 Set 操作 Set 集合就是不允许重复的列表 无序集合 sadd(name,values) 给 name 对应的集合中添加 1 个或多个元素 import redis ...

  6. gin中从reader读取数据数据

    package main import ( "fmt" "github.com/gin-gonic/gin" "net/http" &quo ...

  7. Python学习笔记_从CSV读取数据写入Excel文件中

    本示例特点: 1.读取CSV,写入Excel 2.读取CSV里具体行.具体列,具体行列的值 一.系统环境 1. OS:Win10 64位英文版 2. Python 3.7 3. 使用第三方库:csv. ...

  8. python 去除Excel中的重复行数据

    导入pandas import pandas as pd 1.读取excel中的数据: frame = pd.DataFrame(pd.read_csv('excel的绝对路径.csv'', 'She ...

  9. Node.js向MongoDB中插入并查询数据

    首先必须要保持Node.js与MongoDB保持连接 具体教程见:Node.js连接MongoDB数据库步骤 插入数据步骤如下 node项目文件如下:在routes文件夹下新建insert.js文件, ...

随机推荐

  1. 类的专有方法(__getattr__和__setattr__、__delattr__)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #http://www.360doc.com/content/15/0413/19/12067640_4629 ...

  2. 10、java初始化顺序

      在new B一个实例时首先要进行类的装载.(类只有在使用New调用创建的时候才会被java类装载器装入) 2,在装载类时,先装载父类A,再装载子类B3,装载父类A后,完成静态动作(包括静态代码和变 ...

  3. 升级 asp.net core 1.1 到 2.0 preview

    Upgrading to .NET Core 2.0 Preview 1 更新 依赖的类库 改为 标准库 2 web app  更改 csproj 文件---升级版本 <PropertyGrou ...

  4. ORACLE 11G 利用泠备份恢复standby库

    利用泠备份恢复standby数据库 開始使用泠备份进行db恢复 2.1,停止掉standby库 SQL> shutdown immediate; Database closed. Databas ...

  5. 通过JS控制各种元素的点击事件的【时间间隔】,特别适合【发表评论】功能

    1.使用情景模拟:下单(防止用户无脑狂点).支付(防止用户无脑点击支付).发表评论(防止用户无脑点击),当然如果你用了一个提示框进行屏蔽,下面代码可以无视了,右上角谢谢. 2.默写情景比如:比如发表评 ...

  6. springmvc+spring框架

    jar包 com.springsource.javax.validation-1.0.0.GA.jar com.springsource.org.aopalliance-1.0.0.jar com.s ...

  7. 利用Aspose.BarCode生成条码

    生成条码有很多控件,大部分好的控件,做出来的条码精确清晰,但是往往该部分的控件费用都很高,这里推荐大家使用6.0版本的破解版,可以生成无水印,下方也可以不显示文字. 1.下图是 onbarcode 控 ...

  8. Python websocket

    一.自己实现websocket 网上流传的都是Python2的websocket实现 # coding=utf8 # !/usr/bin/python import struct, socket im ...

  9. 网站跳转到cgi-sys/defaultwebpage.cgi的原因和解决方式

    cpanel遇到这种问题,看了这篇文章老鹰主机域名解析A记录教程–关于cgi-sys/defaultwebpage.cgi后,尝试后     首先ping 域名,结果如下     看到没有ping结果 ...

  10. RabbitMQ 安装和监控[原,转]

    在Windows上安装Rabbit MQ 指南,最好的是这篇<Rabbit MQ Windows Installation guide>,其中还包括了使用.NET RabbitMQ.Cli ...