博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python将不同数据库多张表内容整合到一张表中
阅读量:4355 次
发布时间:2019-06-07

本文共 3451 字,大约阅读时间需要 11 分钟。

#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 = ""
        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
   

 

转载于:https://www.cnblogs.com/blogs-of-lijing/p/3429973.html

你可能感兴趣的文章
ActionBar
查看>>
5种方法实现数组去重
查看>>
2~15重点语法
查看>>
flask中的CBV,flash,Flask-Session,WTForms - MoudelForm,DBUtils 数据库连接池
查看>>
最近整理的提供免费代理列表的几个网站
查看>>
探偵ガリレオー転写る2
查看>>
快速排序算法C++实现[评注版]
查看>>
七尖记
查看>>
SAP(最短增广路算法) 最大流模板
查看>>
用极大化思想解决矩形问题学习笔记
查看>>
Django REST Framework 简单入门
查看>>
Hibernate中fetch和lazy介绍
查看>>
修改ip脚本
查看>>
解析xlsx与xls--使用2012poi.jar
查看>>
java5,java6新特性
查看>>
【LOJ】#2290. 「THUWC 2017」随机二分图
查看>>
SSL-ZYC 活动安排
查看>>
Git clone 报错 128
查看>>
在Python中执行普通除法
查看>>
编译原理(第三版) 语法分析器
查看>>