利用python读取Excel文件的数据到Mysql

运营工作中会遇到很多Excel表格,表格的模板都是一样的,但是只是数据不一样,一个个粘贴复制会很麻烦,我又不会VBA,那么如何快速将数据都汇总到一起,并导入到数据库呢?我尝试了用脚本的方式,解决这个问题。(本人菜鸡,如打扰到您,请见谅)(表中数据为非真实数据,如有雷同,巧合)

1首先先对文件有个大概了解。
D盘中有一个文件夹以及三个xlsx文件。

在这里插入图片描述
以下是单个表有的sheet:(该表有两个sheet:“小上海”,“上海”)
在这里插入图片描述

以下是单个sheet的数据:
在这里插入图片描述
**2:**数据库
数据库中字段的设置

SQL语句创建表table:

create table air_sh(

id int(10) not null auto_increment,
city VARCHAR(20) COMMENT "城市",
AQI int(20) COMMENT "指数",
Pri_population VARCHAR(20) comment "首要污染物",
date Datetime comment "日期",
air_level VARCHAR(30) COMMENT "空气级别",
PRIMARY key(id)

)
在这里插入图片描述

import xlrd
from xlrd import xldate_as_tuple
import pymysql
import datetime
import os #这些都是需要导入的包

path=“D:\hello”
files=os.listdir(path)
for i in files:
if i.endswith(".xlsx"):
path1=path+"\"+i
book=xlrd.open_workbook(path1) #读取D盘“hello”文件夹下的所有excel表文件

database=pymysql.connect(host="localhost",port=3306,user="root",password="root",db="for_excel",charset="utf8")   		#链接数据库(主机,端口,用户,密码等)
cursor=database.cursor()					# 数据库游标															
query='''insert into air_sh(id,city,AQI,pri_population,date,air_level) VALUES (%s,%s,%s,%s,%s,%s)'''		#执行sql插入
for j in range(len(book.sheets())):								#遍历表的sheet
    table=book.sheet_by_index(j)

    for i in range(1,table.nrows):								#遍历每个单元格
        id=int(table.cell(i,0).value)
        city=str(table.cell(i,1).value)
        AQI=int(table.cell(i,2).value)
        pri_population=str(table.cell(i,3).value)
        if  table.cell(i,4).ctype==3:																	**#判断单元格中的时间类型是否为3**
            time=xldate_as_tuple(table.cell(i,4).value,0)									**#将时间转化为元祖格式**
            date=datetime.datetime(*time)														**#将元祖格式转化为datetime**

        air_level=str(table.cell(i,5).value)
        values=(id,city,AQI,pri_population,date,air_level)
        cursor.execute(query,values)
cursor.close()						#关闭游标
database.commit()						#提交操作

database.close()				#关闭数据库

执行后的结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值