利用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() #关闭数据库
执行后的结果: