美文网首页
转换数据

转换数据

作者: 好好先生90 | 来源:发表于2017-08-04 05:44 被阅读0次
# !/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)

相关文章

  • day4循环和分支

    一、数据类型转换 1.数据类型自动转换 运行 2.强制转换 基本语法:类型名(需要转换的数据) a.将其他数据转换...

  • JAVA基础第四天

    JAVA数据类型---布尔类型; 数据类型转换自动数据类型转换 强制数据类型转换

  • python数据分析10:数据转换

    数据转换:一般包括一列数据转换为多列数据,行列转换,DataFrame转换为字典、列表和元组等 【一列数据转换为多...

  • 循环

    一,数据类型转换 基本格式:数据类型(带转换数据) 1.转换成int类型:int(待转换数据) (1).float...

  • 2018-08-23day04循环和分支学习总结

    一.数据类型转换 1.数据类型的自动转换 2.强制转换 基本语法:类型名(需要转换的数据)a.将其他数据转换成in...

  • SpringMVC 数据转换 Day22 2018-12-12

    SpringMVC 数据转换 springMVC数据绑定流程 使用ConversionService转换数据 使用...

  • SpringMVC多种数据类型转换器 Day30 2018-12

    SpringMVC 数据转换 springMVC数据绑定流程 使用ConversionService转换数据 使用...

  • JavaScript基础03- 数据类型转换

    数据类型转换 所谓的数据类型转换,就是将一种数据类型转换为另一种数据类型,所以,数据类型转换包括,转换为字符串类型...

  • 3-数据类型转换

    数据类型转换 将数据有当前类型变化为其他类型的操作就是数据类型转换。 数据类型转换分类: 数据类型转换一共分为2类...

  • JS里的数据类型转换

    在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换。 1, 显式数据类型转换 a:转数字: 1)Numb...

网友评论

      本文标题:转换数据

      本文链接:https://www.haomeiwen.com/subject/pxomlxtx.html