python-从文件读取json数据写到数据库


#!/bin/env python
#coding=utf-8

import sys
import urllib2
import json
import datetime
import pymysql as MySQLdb
import time
from itertools import islice 

reload(sys)
sys.setdefaultencoding('utf-8')

mysql_conn = MySQLdb.connect(host="127.0.0.1",user="admin",passwd="123456",db="test",port=3306,charset="UTF8")
mysql_cursor = mysql_conn.cursor()

if __name__=='__main__':
	today = datetime.date.today().strftime('%Y%m%d') if len(sys.argv)<2 else sys.argv[1]
	yesterday = (datetime.datetime.strptime(today,'%Y%m%d')-datetime.timedelta(days=1)).strftime('%Y%m%d')
	#print 'processing date %s' % (yesterday)
	logFilePath = '/data1/trace_data/daystat.'+yesterday+'.dat'
	#print logFilePath
	logFile = open(logFilePath)
	i = 0
	print 'delete old data...'
	#mysql_cursor.execute("delete from test_xx where log_date=%(log_date)s",{'log_date':yesterday})
	print "finish deleting"
		
	#跳过前两行   
	for line in islice(logFile,2,None): 
		#读取数据,获取字段信息
		lineData = json.loads(line)
		#log_date = lineData.get('day')
		log_date = time.strftime("%Y%m%d", time.localtime(lineData.get('day')))
		#if log_date != yesterday:
		#continue
		#print lineData
		channel = lineData.get('channel')
		Id = lineData.get('Id')
		total_time = lineData.get('total_time')
		xx_time = lineData.get('xx_time')
		oo_time = lineData.get('oo_time')
		distance = lineData.get('distance')
		xx_distance = lineData.get('xx_distance')
		oo_distance = lineData.get('oo_distance')
		id = lineData.get('_id')
		sid_num =  lineData.get('sid_num')	
		for address in lineData.get('city','none'):
           # print  lindeData.get('city','none')
			if type(address) != str:
				province = address.get('province','null')
				city = address.get('city','null')
			else:
				province = "null"
				city = "null"
			print city

			mysql_cursor.execute("insert into test_xx(log_date,channel,city,Id,total_time,xx_time,oo_time,distance,xx_distance,oo_distance,id,sid_num,province) values(%(log_date)s,%(channel)s, %(city)s,%(Id)s,%(total_time)s,%(xx_time)s,%(oo_time)s,%(distance)s, %(xx_distance)s,%(oo_distance)s,%(id)s,%(sid_num)s,%(province)s);",{'log_date':log_date,'channel':channel,'city':city,'Id':Id,'total_time':total_time,'xx_time':xx_time,'oo_time':oo_time,'distance':distance,'xx_distance':xx_distance,'oo_distance':oo_distance,'id':id,'sid_num':sid_num,'province':province})
			print log_date,channel,city,Id,total_time,xx_time,oo_time,distance,xx_distance,oo_distance,id,sid_num,province
			i += 1
	print i
	mysql_conn.commit()
	mysql_conn.close()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值