python mysql 多张表_python将不同数据库多张表内容整合到一张表中

该Python脚本用于从不同数据库的多张表中选取数据,并整合到`rpttracks_cps`表中。首先,它清除已有数据,然后分别处理`source_conversion`和`base_XXX`表,最后进行数据插入和删除操作以更新报表。
摘要由CSDN通过智能技术生成

#encoding=utf8

#!/usr/bin/env python

import os

import sys

import urllib2

import MySQLdb

import simplejson

import subprocess

import sys

sys.path.append("/home/hadoop/hivelib")

from common import *

from util import Utils

from datetime import datetime,timedelta

from dbutil import DBUtils

import csv

class RptTracksCps(object):

def __init__(self,today):

self.today = today

self.dayStr = today.strftime("%Y-%m-%d")

self.paramDict = {"dayStr":self.dayStr}

self.testFlag =False

def run(self):

self.deleteData4DB()

self.DataDeal_source()

self.DataDeal_base()

self.selectSum4DB()

def DataDeal_source(self):

tmpFileName = "rpttrackscps_source_%s.log" % self.dayStr

conn = DBUtils.getConnection(dbName="ktepdb")

selectSql = """select detail_external,sum(passenger_number),sum(order_pay),date,external from source_conversion where date ='%(dayStr)s' and external='marketing' group by detail_external,date""" % self.paramDict

rowList = DBUtils.selectSql(selectSql,conn)

self.insertData2DB(rowList)

def selectSum4DB(self):

conn = DBUtils.getConnection(dbName="uniondb")

selectSql = """select detail_external,sum(passenger_number),sum(order_pay),date,external,sum(pay_order) from rpttracks_cps where date ='%(dayStr)s' and external='marketing' group by detail_external,date""" % self.paramDict

rowLists = DBUtils.selectSql(selectSql,conn)

#self.insertData2DB(rowLists)

insertSql ='insert into rpttracks_cps(detail_external,passenger_number,order_pay,date,external,pay_order) VALUES (%s,%s,%s,%s,%s,%s)'

DBUtils.insertList(insertSql,rowLists,conn)

sum=0

for item in rowLists:

sum+=1

continue

#print sum

selectSql = """select detail_external,count(*) from rpttracks_cps where date ='%(dayStr)s'""" % self.paramDict

rowList = DBUtils.selectSql(selectSql,conn)

for line in rowList:

deleteSql = "delete from `rpttracks_cps` where date='%s' and external='marketing' ORDER BY id LIMIT %s" % (self.paramDict["dayStr"],line[1]-sum)

#print line[1]

DBUtils.deleteSql(deleteSql,conn)

break

conn.close()

def DataDeal_base(self):

url = "http://192.168.0.76:60903/configadmin/index.php?action=api4inner&method=api&apiname=getSiteRelationForCustomer"

site_no={}

sites=""

urls = urllib2.urlopen(url)

data = urls.read()

datas = simplejson.loads(data)

conn = DBUtils.getConnection(dbName="ktepdb")

conns = DBUtils.getConnection(dbName="uniondb")

#print datas

for line in datas.keys():

try:

if line == "xxx":

continue

tmpFileName = "rpttrackscps_base_%s.log" % self.dayStr

sql = '''

select detail_external,sum(pay_order),order_sn,date,external from base_%s where date ='%s' and external='marketing' group by detail_external

''' % (line,self.paramDict["dayStr"])

rowList = DBUtils.selectSql(sql,conn)

insertSql ='insert into rpttracks_cps(detail_external,pay_order,order_sn,date,external) VALUES (%s,%s,%s,%s,%s)'

DBUtils.insertList(insertSql,rowList,conns)

except:

pass

conn.close()

conns.close()

def deleteData4DB(self):

conn = DBUtils.getConnection(dbName="uniondb")

deleteSql = "delete from `rpttracks_cps` where date='%(dayStr)s' and external='marketing'" % self.paramDict

DBUtils.deleteSql(deleteSql,conn)

conn.close()

def insertData2DB(self,rowList):

insertSql ='insert into rpttracks_cps(detail_external,passenger_number,order_pay,date,external) VALUES (%s,%s,%s,%s,%s)'

conn = DBUtils.getConnection(dbName="uniondb")

DBUtils.insertList(insertSql,rowList,conn)

conn.close()

if __name__=='__main__':

today = datetime.now() - timedelta(days=1)

ompdata2db = RptTracksCps(today)

ompdata2db.run()

#homedir = os.getcwd()

#print homedir

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值