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文件, ...
随机推荐
- 自己动手写处理器之第二阶段(2)——Verilog HDL简单介绍
将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第六篇.我尽量每周四篇 2.3 Verilog HDL简单介绍 本书实现的OpenMIPS处理器是使用Verilog HDL编 ...
- JAVA中定义常量的几种方式
1.最古老的 //未处理 public static final Integer PROCESS_STATUS_UNTREATED = 0; //已接收 public static final Int ...
- 递归和for循环
# -*- coding: utf-8 -*- #python 27 #xiaodeng #http://www.cnblogs.com/BeginMan/p/3223356.html #递归2 '非 ...
- smack 4.1.2+openfire 3.10.2i
openfire 和以往版本号配置没有多大差别就不具体介绍了,网上搜会有一大堆的图解 以下主要说一下smack 4.1.2 的开发使用,在网上看了好多文章包含stackoverflow的都没有4.1以 ...
- HDUOJ-----2066一个人的旅行
一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- Linux安装JDK详细步骤(rpm方式)
1. 先从网上下载jdk(jdk-6u32-linux-i586-rpm) ,下载后放在/home目录中,当然其它地方也行. 进入安装目录 #cd /home#cp jdk-6u32-linux-i5 ...
- NuGet学习笔记(1) 初识NuGet及快速安装使用[转]
来自:http://www.cnblogs.com/lzrabbit/archive/2012/05/01/2477607.html 关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学 ...
- 【php】基础学习5
主要包括PHP的错误.异常处理和调试.具体如下: <html xmlns=http://www.w3.org/1999/xhtml> <head> <meta http- ...
- RHEL6 - 图形化设置IP
RHEL6下我们除了麻烦地修改网卡的主配置文件外,还可以通过setup,system-config-network等工具指令打开网卡的图形化界面 #setup #system-config-net ...
- byte[] 转Hex String
一.一个字符串转byte数组怎么转? byte[] byteArray = String.getBytes(); 二.又想把生成的数组转回字符串怎么办? String covertString = n ...