python实现读取excel写入mysql的小工具详解
Python是数据分析的强大利器
利用Python做数据分析,第一步就是学习如何读取日常工作中产生各种excel报表并存入数据中,方便后续数据处理。
这里向大家分享python如何读取excel,并使用Python将数据存入Mysql中,有需要的朋友们一起来看看吧。
背景
需要导入全国高校名录到数据库,从教委网站下到了最新的数据,是excel格式,需要做一个工具进行导入,想试用一下python,说干就干。
库
- xlrd:excel读写库
- pymysql:mysql数据库驱动库,纯python打造
- re:正则表达式库,核心库
前两个用pip轻松完成安装,本人是在macpro是进行的,过程很顺利,以前在mac上装mysqlclient一直安装不上,所以一度放弃使用python,但我在linux下安装mysqlclient却没有任何问题。
源代码
很简单的小脚本,留存纪念。值得注意的一点,数据库连接字段串中要设定字符编码,不然默认是lanti-1,写入会出错。
importxlrd importpymysql importre conn=pymysql.connect(host='databaseconnectaddress',port=1234,user='root', passwd='****',db='databasename',charset='utf8mb4') p=re.compile(r'\s') data=xlrd.open_workbook('./W020170616379651135432.xls') table=data.sheets()[0] t=table.col_values(1) nrows=table.nrows foriinrange(nrows): r1=table.row_values(i) iflen(r1[2])==10: cur=conn.cursor() cur.execute('insertinto`university`(`id`,`name`,`ministry`,`city`,`level`,`memo`)\ values(%s,%s,%s,%s,%s,%s)', (r1[2],p.sub('',r1[1]),p.sub('',r1[3]),p.sub('',r1[4]),r1[5],r1[6])) conn.commit() cur.close() conn.close()
心得
写惯了类C的语言,不太习惯python,想同时掌握两种风格的编程语言,好痛苦啊。python编程效率的确不错,这是我第一次用python写实用小程序,连查带写带调试,一共也就花了一个来小时。python库与资料丰富,不愁找不到合适的^_^
数据库写入优化
早上闲来无事,用批量写入优化了一下,任务秒完成,比一条条写入快了很多,比我预想的差别还要大。看来,没有不好的工具,只是我们没有用好啊!
importxlrd importpymysql importre conn=pymysql.connect(host='databaseconnectaddress',port=1234,user='root', passwd='****',db='databasename',charset='utf8mb4') p=re.compile(r'\s') data=xlrd.open_workbook('./W020170616379651135432.xls') table=data.sheets()[0] t=table.col_values(1) nrows=table.nrows ops=[] foriinrange(nrows): r1=table.row_values(i) iflen(r1[2])==10: ops.append((r1[2],p.sub('',r1[1]),p.sub('',r1[3]),p.sub('',r1[4]),r1[5],r1[6])) cur=conn.cursor() cur.executemany('insertinto`university_copy`(`id`,`name`,`ministry`,`city`,`level`,`memo`)\ values(%s,%s,%s,%s,%s,%s)',ops) conn.commit() cur.close() conn.close()
python读取excel文件遇到的问题
1、mac安装xlrd模块,如果cmd下执行pipinstallxlrd安装不成功,可以直接去官网下载,名称类似这样的文件xlrd-1.0.0-py3-none-any.whl,切换到已下载的文件路径在cmd下执行pip3installxlrd-1.0.0-py3-none-any.whl即可
http://pypi.python.org/pypi/xlrd
2、python打开excel报xlrd.biffh.XLRDError:Unsupportedformat,orcorruptfile:ExpectedBOFrecord;foundb'username'
可以确认下要打开的excel保存时是不是本身就存在兼容性等格式提示,如果有的话,需要重新建一个不存在格式问题的文件
importxlrd fromos.pathimportjoin,abspath,dirname fname=join(dirname(dirname(abspath(__file__))),'test1.xls') bk=xlrd.open_workbook(fname,encoding_override="utf-8") shxrange=range(bk.nsheets) try: sh=bk.sheet_by_name("工作表1") #获取行数 nrows=sh.nrows #获取列数 ncols=sh.ncols print("nrows%d,ncols%d"%(nrows,ncols)) #获取第一行第一列数据 cell_value=sh.cell_value(1,1) #printcell_value row_list=[] #获取各行数据 foriinrange(0,nrows): row_data=sh.row_values(i) row_list.append(row_data) except: print("nosheetin%snamedSheet1"%fname)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。