python将excel 12w行数据写入数据库耗时半小时!

本文测试了三种将Excel数据批量导入MySQL的方法,包括直接使用executemany、单进程for循环执行和使用连接池。实验结果显示,直接使用executemany在无进程池的情况下耗时26分钟,而单进程for循环执行则耗时51分钟。使用连接池的方案耗时约24-25分钟,但效果并不明显。针对性能优化提供了对比数据。
摘要由CSDN通过智能技术生成

测试了三种方案:

方案一、消耗时间: 1586秒=26分钟,不使用进程池,executemany插入

 
 

 

  1. import openpyxl

  2. import pymysql as msq

  3. import time

  4.  
  5. conn = msq.connect(

  6. host='127.0.0.1',

  7. port=3306,

  8. user='root',

  9. password='bagayalu',

  10. database='test',

  11. ) #连接数据库

  12. cursor = conn.cursor(cursor=msq.cursors.DictCursor) #获取游标

  13.  
  14. def get_data():

  15. wb = openpyxl.load_workbook(r'C:\Users\User\Desktop\xx.xlsx') #打开excel表格

  16. ws = wb.active #激活

  17. pa = [] #定义空列表

  18. for r in range(1,ws.max_row): #循环每一行,从1开始,excel第一个是1

  19. A1 = ws.cell(r+1,1).value #获取第一行第一列

  20. A2 = ws.cell(r+1,2).value #获取第一行第二列

  21. A3 = ws.cell(r+1,3).value #获取第一行第三列

  22. pa.append([str(A1),A2,A3]) #将参数以列表的形式追加到列表里,参数的格式就得是这样的

  23. try:

  24. print("开始执行sql...")

  25. sql = "REPLACE INTO test.tmp_table (id, one, two, three) VALUES (NULL, '%s', '%s', '%s');

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值