公司有下载接口,会进行数据下载保存成excl文件,本人利用python进行自动化下载和数据清洗,然后因为数据量有时特别大的原因,使用了mysql数据库进行数据处理,废话不多说,上代码
from datetime import datetime starttime = datetime.now() import time import pandas as pd import pymysql from datetime import datetime class MysqlAct(object): def __init__(self): self.connect = pymysql.connect(host='localhost', user='root', password='root', db='tt') self.cursor = self.connect.cursor() def __del__(self): self.connect.close() def select(self, sql): self.cursor.execute(sql) return self.cursor.fetchall() def insert(self, sql): self.cursor.execute(sql) self.connect.commit() def insert_sql(self, temp, data): cur = self.connect.cursor() try: cur.executemany(temp, data) self.connect.commit() except: self.connect.rollback() finally: cur.close() def chuan_rubiao(a): starttime = datetime.now() chuanru_a = pd.read_excel(a, usecols='a:d') # 数据库字段非常多,这里只为展示,选取字段A到D四列字段 nums = chuanru_a.shape[0] # 获取excl文件的总共条数 mysql = MysqlAct() sql = "desc ggcs" # 选择读取那张表ggcs fields = mysql.select(sql) # 这里如果打印fields会得到表的结构 fieldsli = [] # 这里是创造一个对应表,会添加到之后的for循环中,然后对应每条数据添加到具体表头的数据列里面 data = [] # 因为批量操作需要有一个元组列表装纳,这里的data就是盒子 for i in fields: fieldsli.append(i[0]) # fieldsli.remove('gd_name') fieldsli = str(tuple(fieldsli)).replace("'", '') print("表结构是:{}".format(fieldsli)) # 打印出来表的结构 for u in range(nums): # 获取行数据转列表 row = chuanru_a.loc[u].tolist() # print(row) row[0] = str(row[0]) rowdata = tuple(row) data.append(rowdata) sql = "insert into ggcs %s VALUES %s" % (fieldsli, rowdata) #mysql.insert(sql) #这里是单条插入,为了相比较时长 tmp = 'insert into ggcs(公告编码,公告标题,网络公告类型,公告场景分类) values(%s,%s,%s,%s)' #这里就是批量处理,要求需要将查数据的表头全部展示,假如有30列就需要在这里写30个字段 l_tmp = data #这个就是数据盒子 mysql.insert_sql(tmp,l_tmp) #批量插入mysql,tmp是表头,l_tmp是数据 print(mysql) endtime = datetime.now() print("程序计算时长: {}h-{}m-{}s".format(endtime.hour - starttime.hour, endtime.minute - starttime.minute,endtime.second - starttime.second)) print("数据已传入数据库") if __name__ == '__main__': a = 'excl.xlsx' chuan_rubiao(a)
以下是单条插入的所用时间,本插入15820*4条数据,所用4分钟
以下是批量插入的所用时间
可以看到数据插入快了不止一点点,这里需要感谢此代码的原始编写大佬,
@何忧非喜{傲娇的程序媛}
python实现excel数据导入mysql_何忧非喜{傲娇的程序媛}的博客-CSDN博客_python将excel导入mysql