python 事务执行10w+插入更新代码

python 事务执行10w+插入更新代码

 之前一条条插入更新10w+大概执行了四五十分钟,后面组合sql语句,一次插入200条节省了十几分钟而已,后面用事物,大概两分钟,效率好了很多。这是主要逻辑代码,数据修改成自己的就可以了,如果不行,可以微信加我li1236li。

代码块

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import MySQLdb

import time
import datetime

connection = MySQLdb.connect(host='127.0.0.1',
                            port='3306',
                            user='root',
                            passwd='123456',
                            db='test')

def merge_sql(table,symbol,src,data):
    sql = """ insert into %s set symbol='%s',close_pri=%f,
                    open_pri=%f,max_pri=%f,min_pri=%f,total_vol=%f,
                    update_time=%d, source='%s' on duplicate key update symbol='%s',close_pri=%f,
                    open_pri=%f,max_pri=%f,min_pri=%f,total_vol=%f
                    """ % (table, symbol, data['close']),  data['open'],  data['high'],  data['low'], data['total'], int(data['ts'],src, symbol,  data['close'],  data['open'],  data['high'],  data['low'], data['total'])
    return sql


def handle_binance():
    try:
        cursor = connection.cursor()
        start_time = time.time()  
        temp_list = []
        for i in range(0,1500): 
            temp_list = symbol_list[i:i+40] 
            print temp_list  
            for j in range(0,100):
                symbol = 'binance'
                sql = '' 
                #数据   
                data = {'ts':1,'close':i,'open':j,'high':1,'low':1,'total':1}
                    sql = merge_sql('tableName', symbol, 'binance', data) + ';'        
                    if sql == '':
                        continue        
                    cursor.execute(sql)
        connection.commit()
        connection.close()
        end_time = time.time()
        total_time = end_time - start_time
        print '数据花费总时间为:' + str(total_time) + '秒'
    except Exception as e:
        print e            

def main():
    try:
        handle_binance()
    except Exception as e:
        print e
if __name__ == '__main__':
    main()           


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值