简单的Python连接MySQL和EXCEL示例

来源:互联网 发布:svg path js 编辑:程序博客网 时间:2024/06/14 04:00

    这几天又重新回顾了一下Python,当初学习它是因为VB6被微软抛弃后不想再用庞大的.NET工具,毕竟不是专业程序员,对于我来说只需要一个小巧、同时安装方便不需要管理员权限(因为公司电脑强制锁权限)、简单快捷实用的编程工具,Python无论哪方面看都成了我的最佳选择。工作中的数据处理工具一直围绕着EXCEL,但VBA能力所限,而且有些功能实现起来比较复杂,有了Python的辅助明显方便许多,这种动态语言只要有环境连编译都不需要,这让我怀念起当年的MATLAB。

      在数据库方面,过去我一直选择实用MSSQL或者ACCESS(姑且称其为数据库吧),但在工作中个人使用SQL比较麻烦,使用ACCESS简单方便(但讨厌的是ACCESS的SQL语言并非标准的SQL)。当时曾想过MySQL似乎是一个不错的选择,可惜用惯了OLEDB和ODBC的我,实在找不到MySQL和EXCEL直接进行数据互传的API或者接口,同时也考虑到数据互传的话没有数据库服务器支持的情况下毕竟ACCESS是比较方便的,于是无奈只好放弃MySQL。

      由于最近心血来潮突然想再研究一下Python,找到了Python和MySQL互传的方法,就想到以Python为中介来实现MySQL和EXCEL的数据互传。以下是实现的方法,程序比较简单:利用Python从EXCEL中读取两列数据存储在LIST中然后连接数据库利用insert语句和LIST内容结合,导入数据库;然后再从数据库读取表的字段和内容,存放到EXCEL新表中,由于是示例以核心内容为主错误处理就不写了

(仅供参考):


# -*- coding: utf-8 -*-"""Created on Fri Oct 05 23:52:33 2012@author: zzcwing"""#导入模块,需要pywin32和MySQLdb模块,下载地址:#pywin32: http://sourceforge.net/projects/pywin32/#MySQLdb:http://sourceforge.net/projects/mysql-python/#按照说明安装即可import win32com.client as win32import MySQLdbapp='Excel'#启动EXCEL程序xl=win32.gencache.EnsureDispatch('%s.Application' % app)#打开相应的EXCEL文件xlbook=win32.Dispatch('Excel.Application').Workbooks.Open('D:\\pyd\\opsdata.xls')#读取EXCEL工具表,打开要导入数据的表sh=xlbook.Worksheets('sheet2')#建立一个空LIST和两个循环参数dfun=[]jcount=2ncount=1#从第一列开始向下循环,找到为空的那一行返回行数,即为第ncount行为空for ncount in range(1,65566):    if sh.Cells(ncount,1).Value==None:        break    else:        continue#print ncount,测试代码,测试ncount值#EXCEL的数据安排为第一行是字段,第二行开始是数据,故从第2行开始循环,将两列数据合并到一个LIST中#LIST结构为[('a','b'),('c','d')]for jcount in range(2,ncount):    dfun.append((sh.Cells(jcount,1).Value,sh.Cells(jcount,2).Value))#关闭EXCEL程序#xl.Application.Quit()#print dfun,测试代码测试dfun的数据#建立一个空LIST fo用来存放字段,读取EXCEL中第一行的字段存储到fo中fo=[]icount=1for icount in range(1,2):    fo.append((sh.Cells(1,icount).Value,sh.Cells(1,icount+1).Value))#测试代码,print fo#打开MYSQL链接conn=MySQLdb.connect(host='localhost',user='root',passwd='0.789asd',db='python')#获取游标操作cursor=conn.cursor()#建立一个空表cursor.execute("create table test("+fo[0][0]+" varchar(100),"+fo[0][1]+" varchar(100));")#利用executemany命令,将LIST,dfun中的数据通过insert语句写入数据库cursor.executemany("""insert into test values(%s,%s);""" ,dfun)#确认数据操作,注意如果没有conn.commit()这个命令,数据无法被插入到数据库中conn.commit()#执行查询检查结果count = cursor.execute('select * from test')  print 'has %s record' % count#重置游标位置cursor.scroll(0,mode='absolute') #搜取所有结果 results = cursor.fetchall()  #测试代码,print results#获取MYSQL里的数据字段fields = cursor.description#将字段写入到EXCEL新表的第一行sh2=xlbook.Worksheets('sheet3')#清空sheet3sh2.Cells.Clearfor ifs in range(1,len(fields)+1):    sh2.Cells(1,ifs).Value=fields[ifs-1][0]#将读取的数据填入到相应的行列中ics=2jcs=1for ics in range(2,len(results)+2):    for jcs in range(1,len(fields)+1):        sh2.Cells(ics,jcs).Value=results[ics-2][jcs-1]#关闭EXCEL程序xl.Application.Quit()#关闭游标和查询链接cursor.close()conn.close()



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被黄牛骗了300怎么办 断奶后乳房有硬块怎么办 断奶了有硬块疼怎么办 断奶时乳房有硬块怎么办 憋奶乳房有硬块怎么办 回奶以后有硬块怎么办 回奶里面有肿块怎么办 回奶时候的硬块怎么办 回奶乳房有硬块怎么办 回奶胀痛有硬块怎么办 回奶期间有硬块怎么办 回奶期间乳房有硬块怎么办 回奶乳房有肿块怎么办 牛犊子出生3天喘怎么办 猪高烧不退不吃怎么办 苹果6刷机失败怎么办 uc能看不能下怎么办 苹果6s铃声太小怎么办 苹果6铃声声音小怎么办 苹果7来电铃声小怎么办 红米手机声音小怎么办 微信安装不上去怎么办 6s无法安装微信怎么办 苹果4微信版本低怎么办 新手机没有微信怎么办 新手机登陆微信怎么办 新号码被注册过怎么办 微信注册不了怎么办啊 苹果4铃声不响怎么办 苹果6黑屏没反应怎么办 苹果7卡机黑屏了怎么办 苹果7手机铃声小怎么办 支付宝发现套现怎么办 空调滴水管断了怎么办 地漏下水管断了怎么办 脸上长白色糠疹怎么办 腋下长白色的毛怎么办 饥荒电羊死光了怎么办 6s储存空间虚满怎么办 大胸下垂穿婚纱怎么办 美团签约成功后怎么办