Python从MongoDB中按天读取数据并格式化日志
#$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中按天读取数据并格式化日志的更多相关文章
- python之从文件中按行读取数据
#!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = 'jiangwenwen' # 从文件中按行读取数据 file = open(& ...
- struts2中从后台读取数据到<s:select>
看到网上好多有struts2中从后台读取数据到<s:select>的,但都 不太详细,可能是我自己理解不了吧!所以我自己做了 一个,其中可能 有很多不好的地方,望广大网友指出 结果如图 p ...
- python操作MONGODB数据库,提取部分数据再存储
目标:从一个数据库中提取几个集合中的部分数据,组合起来一共一万条.几个集合,不足一千条数据的集合就全部提取,够一千条的就用一万减去不足一千的,再除以大于一千的集合个数,得到的值即为所需提取文档的个数. ...
- 使用aggregate在MongoDB中查找重复的数据记录
我们知道,MongoDB属于文档型数据库,其存储的文档类型都是JSON对象.正是由于这一特性,我们在Node.js中会经常使用MongoDB进行数据的存取.但由于Node.js是异步执行的,这就导致我 ...
- Python(Redis 中 Set/Zset 类型数据和其他操作)
1.redis 基本操作命令 Set 操作 Set 集合就是不允许重复的列表 无序集合 sadd(name,values) 给 name 对应的集合中添加 1 个或多个元素 import redis ...
- gin中从reader读取数据数据
package main import ( "fmt" "github.com/gin-gonic/gin" "net/http" &quo ...
- Python学习笔记_从CSV读取数据写入Excel文件中
本示例特点: 1.读取CSV,写入Excel 2.读取CSV里具体行.具体列,具体行列的值 一.系统环境 1. OS:Win10 64位英文版 2. Python 3.7 3. 使用第三方库:csv. ...
- python 去除Excel中的重复行数据
导入pandas import pandas as pd 1.读取excel中的数据: frame = pd.DataFrame(pd.read_csv('excel的绝对路径.csv'', 'She ...
- Node.js向MongoDB中插入并查询数据
首先必须要保持Node.js与MongoDB保持连接 具体教程见:Node.js连接MongoDB数据库步骤 插入数据步骤如下 node项目文件如下:在routes文件夹下新建insert.js文件, ...
随机推荐
- LeetCode 37 Count and Say
The count-and-say sequence is the sequence of integers beginning as follows: 1, 11, 21, 1211, 111221 ...
- 重置outlook 2010
1.进入 D:\program files\mirosoft office\ioffice14 2.outlook /importprf .\.prf 3.账号问题可以-->控制面板--> ...
- logging日志管理-将日志写入文件
# -*- coding: cp936 -*- # test.py #http://blog.chinaunix.net/uid-27571599-id-3492860.html #logging日志 ...
- Mysql 监视工具
对于开发人员来说,最头大的莫过于 ,你本地没事,线上 错误日志一堆. 尤其是数据库通信那一层.SqlServer 有 sql profile 用来监视对应的server上的通信日志,参数 命令等信息. ...
- Java任务调度框架Quartz
转自:http://blog.csdn.net/yuebinghaoyuan/article/details/9045471 介绍 Quartz is a full-featured, open ...
- hdu4135容斥原理 组合遍历
容斥原理实现的关键在于:组合遍历,即如何遍历2^n种组合. 容斥原理的三种写法: DFS 队列数组 位数组 #include<stdio.h> #include<iostream&g ...
- vi 删除全部内容
非插入模式下删除所有内容 a.光标移到第一行,然后按10000后然后点dd b.光标移到第一行,按下dG 命令输入模式下删除所有内容 a.输入命令.,$d,回车 b.输入命令1,999dd,回车
- 学习WCF笔记之二
一.学习文章http://www.cnblogs.com/iamlilinfeng/archive/2012/09/25/2700049.html 二.步骤 学习WFC,按照大神的文章一步步学习,不过 ...
- Android 手机上获取物理唯一标识码
唯一标识码这东西在网络应用中非常有用,例如检测是否重复注册之类的. import android.provider.Settings.Secure;private String android_id ...
- (三)RocketMq入门之独立线程处理业务
一.示例代码 这段代码实现了一个独立线程监听在一个特殊的消息队列上,一旦收到消息就处理并发送给MQ,然后推送给所有的消费者. import com.alibaba.rocketmq.client.ex ...