ykwll 发表于 2017-12-15 20:34:49

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
  
collection = db.speech
  

  
for day in days:
  tmpArray0 = time.strptime(str(day), "%Y-%m-%d %H:%M:%S")
  tmpArray1 = time.strptime(str(day), "%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
页: [1]
查看完整版本: Python从MongoDB中按天读取数据并格式化日志