转换数据

# !/usr/bin/env python3
# -*- coding:utf-8 -*-

import pymysql
import os
import time
from datetime import date, datetime

remoteDBUser='db_order'
remoteDBPasswd='db_order'
remoteDBHost='192.168.16.125'

try:
    conn = pymysql.connect(host=remoteDBHost,port= 3306,user = remoteDBUser,passwd=remoteDBPasswd,db='db_order_sharding')
    cur = conn.cursor()
    cur.execute("select shard_name from ord_table_shards")
    shardTuples = cur.fetchall()
    print(shardTuples)
    storeIdSet = set()
    for shardTuple in shardTuples:
        shardName = shardTuple[0]
        #print("shardName:%s" %shardName)
        storeIdStr = shardName.split('_')[-1]
        #print("storeId:%s" % storeIdStr)
        storeIdSet.add(storeIdStr)
    print("storeIdSet:%s" %storeIdSet)
    cntMap = dict()
    backupDir = '/home/developer/mysqlbackup/' + time.strftime("%Y%m%d")
    if not os.path.exists(backupDir):
        os.makedirs(backupDir)
    writeFileName = backupDir + "/updateOrderCode.sql"
    if os.path.exists(writeFileName):
        os.remove(writeFileName)
    with open(writeFileName, 'a', encoding='utf-8') as f:
        for storeId in storeIdSet:
            storeIdHex = hex(int(storeId))
            stripHex = storeIdHex[2:]
            print("storeId:%s ,storeIdHex:%s,%s" %(storeId,storeIdHex,stripHex))
            generateStr = stripHex
            if len(stripHex) < 6:
                prependZero = '0' * (6 -len(stripHex))
                generateStr = prependZero + stripHex
                print("generateStr:%s" %generateStr)
            cur.execute("select id, create_time, store_id from ord_order_info_%s" %storeId)
            createTimeTuples = cur.fetchall()
            print(createTimeTuples)
            for createTimeTuple in createTimeTuples:
                orderId = createTimeTuple[0]
                print("orderId:%s" %orderId)
                createTime = createTimeTuple[1]
                #print("createTime:%s, type:%s" %(createTime,type(createTime)))
                timeStr = createTime.strftime('%Y%m%d')
                print("timestr:%s" %timeStr)
                key = generateStr + timeStr
                print("key:%s" %key)
                cnt = 0
                if cntMap.get(key) is None:
                    print("not has key")
                    cnt = 1
                    cntMap[key] = 1
                else:
                    print("has key")
                    cntMap[key] = cntMap[key] + 1
                    cnt = cntMap[key]
                strCnt = str(cnt)
                gCnt = strCnt
                lenCnt = len(strCnt)
                if lenCnt < 4:
                    pZero = '0' * (4 - lenCnt)
                    gCnt = pZero + strCnt
                print("gCnt:%s" %gCnt)
                print("gOrderCode:%s%s" %(key, gCnt))
                gOrderCode = key + gCnt
                sid = gOrderCode[:6]
                storeIdH = int(sid,16)
                print("storeIdH:%s, storeId:%s" %(storeIdH, createTimeTuple[2]))
                #cur.execute("update pay_flow_%s p, ord_order_info_%s i set p.order_id = %s where p.order_id = i.id and i.id = %s" %(storeIdH, storeIdH, gOrderCode, orderId))
                f.writelines("update pay_flow_%s p, ord_order_info_%s i set p.order_id = '%s' where p.order_id = i.id and i.id = '%s';\n" %(storeIdH, storeIdH, gOrderCode, orderId))
                #print("update pay_flow_%s orderId:%s success!" %(storeIdH, orderId))
                f.writelines("update ord_order_detail_%s d, ord_order_info_%s i set d.order_id = '%s' where d.order_id = i.id and i.id = '%s';\n" %(storeIdH, storeIdH, gOrderCode, orderId))
                    #cur.execute("update ord_order_detail_%s d, ord_order_info_%s i set d.order_id = %s where d.order_id = i.id and i.id = %s" %(storeIdH, storeIdH, gOrderCode, orderId))
                    #cur.execute("update ord_order_info_%s set id = %s where id = %s" %(storeIdH,gOrderCode,orderId))
                f.writelines("update ord_order_info_%s set id = '%s' where id = '%s';\n" %(storeIdH,gOrderCode,orderId))
    #f.flush()
    #f.close()
    cur.close()
    conn.close()
except Exception as  e:
        print(e)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,486评论 19 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,778评论 0 17
  • 最痛苦的不是生病,而是吃药,虽然你知道药对你来说是益物,病是苦痛,但仍会觉得吃药是最痛苦的,就像你明明喜欢一个人却...
    踏荫阅读 1,118评论 0 4
  • 二十岁 最美丽的年纪 要去浪啊 去草原,海滩,高山 去看导演相机下的古都 去看文人钢笔下的重山 去游览,去享受 也...
    觅诉阅读 851评论 0 1
  • 一、近六个月的目标:完美的伴侣 二、需要种下的种子:爱与陪伴,智慧,温暖,财富,样貌 三、具体的播种行为 1.又到...
    柔光宝宝阅读 1,040评论 0 0