需求:

将若干个excel文件导入到mysql数据库同一表中

作为一个菜鸟,手动降低很多难度

1、拿到这个需求,当然先上网百度啦,发现利用python的xlrd库就可以实行,于是开始安装,是参考这篇文章http://www.360doc.com/content/12/0918/22/9369336_236837182.shtml

代码如下:

#-*-coding:gbk-*-

import xlrd

import re

import sys,os

reload(sys)

sys.setdefaultencoding( "gbk" )

def main():

xlsfile = xlrd.open_workbook("C:\\Python27\\lcc.xls")

try:

mysheet = xlsfile.sheet_by_name("Sheet1")

except:

print("no sheet in %s named Sheet1")

return

print("%d rows,%d cols"%(mysheet.nrows,mysheet.ncols))

nr =int(mysheet.nrows)

nc =int(mysheet.ncols)

for row in range(0,nr):

temp=""

for col in range(0,nc):

if mysheet.cell(row,col).value != None:

temp += str(mysheet.cell(row,col).value)+"\t"

print temp

if __name__ == '__main__':

main()

实现了读取excel文件就成功了一大步啦!

2、利用python连接mysql数据库

首先还是要装一个模块 MySQLdb

装好之后就开始连接啦!

代码如下

#-*-coding:gbk-*-

import MySQLdb

database = MySQLdb.connect (host="localhost", user = "root", passwd = "123456", db = "123",charset="utf8")

# 获得游标对象, 用于逐行遍历数据库数据

cursor = database.cursor()

# 关闭游标

cursor.close()

# 提交

database.commit()

# 关闭数据库连接

database.close()

# 打印结果

print ""

print "Done! "

ps:在连接数据库之后,出现过数据库乱码的情况,找了很多资料才发现是要设置charset="utf8" 才能成功的插入中文,神坑

3、第三步就可以将两个连起来啦:

代码如下:

#-*-coding:gbk-*-

import xlrd

import MySQLdb

import sys,os

import re

#from datetime import datetime

#from xlrd import xldate_as_tuple

reload(sys)

sys.setdefaultencoding( "gbk" )

book = xlrd.open_workbook("C:\\Python27\\lcc.xls")

b1 = 'Sheet1'

sheet = book.sheet_by_name(b1)

database = MySQLdb.connect (host="localhost", user = "root", passwd = "123456", db = "123",charset="utf8")

# 获得游标对象, 用于逐行遍历数据库数据

cursor = database.cursor()

nr = int(sheet.nrows)

nc = int(sheet.ncols)

# 创建插入SQL语句

query = """INSERT INTO work (id, bomc, time, worker, admin, mukuai, ispl, note) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)"""

# 创建一个for循环迭代读取xls文件每行数据的, 从第二行开始是要跳过标题

for r in range(1, nr):

id = k[0] +'_' + bytes(sheet.cell(r,0).value) + '_' + sheet.cell(r,1).value

bomc = sheet.cell(r,1).value

#time = sheet.cell(r,2).value

time = k[0]

worker = sheet.cell(r,3).value

admin = sheet.cell(r,4).value

mukuai = sheet.cell(r,5).value

ispl = sheet.cell(r,6).value

note = sheet.cell(r,7).value

values = (id, bomc, time, worker, admin, mukuai, ispl, note)

# 执行sql语句

cursor.execute(query, values)

# 关闭游标

cursor.close()

# 提交

database.commit()

# 关闭数据库连接

database.close()

# 打印结果

print ""

print "Done! "

print ""

columns = str(nc)

rows = str(nr)

print("%d rows,%d cols"%(sheet.nrows,sheet.ncols))

4、那么问题来了,我现在只能对一个excel文件进行操作,怎么样才可以对大量数据进行处理呢?然后我导师就告诉我可以用批处理呀!又开始了解批处理:

test.py   E:\File\AI\lcc.xls

**test.py 就是我们的python代码 后面的文件路径就是我们要对其操作的文件,要对多个文件操作只要将那个文件的路径和名字按同样的格式写在一个文件就好啦,然后保存为bat文件,就OK啦!!!

那么问题又来了,我们该怎么根据批处理文件来进行代码里面文件名的改变呢?这时候又是一个新知识啦,利用python的启动参数,具体可以参考这篇文章:http://www.cnblogs.com/likui360/p/5768623.html,简言之就是利用sys.argv[]获取命令行参数,sys.argv[0] 代表的是test.py sys.argv[1] 代表的是文件路径

到现在,问题基本解决了,可以完美的点击bat文件来进行测试啦!!!

附上完整代码:

#-*-coding:gbk-*-

import xlrd

import MySQLdb

import sys,os

import re

reload(sys)

sys.setdefaultencoding( "gbk" )

filename = sys.argv[1]

book = xlrd.open_workbook(filename)

k = re.findall(r'(\w*[0-9]+)\w*',filename)

#这里是利用我文件名字中的日期来进行截取日期字段

if len(sys.argv) == 3:

b1 = sys.argv[2]

else:

b1 = 'Sheet1'

sheet = book.sheet_by_name(b1)

database = MySQLdb.connect (host="localhost", user = "root", passwd = "123456", db = "123",charset="utf8")

#这里user passwd就是你的mysql数据库用户和密码,db就是你要连接的数据库名字

# 获得游标对象, 用于逐行遍历数据库数据

cursor = database.cursor()

nr = int(sheet.nrows)

nc = int(sheet.ncols)

# 创建插入SQL语句

query = """INSERT INTO work (id, bomc, time, worker, admin, mukuai, ispl, note) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)"""

# 创建一个for循环迭代读取xls文件每行数据的, 从第二行开始是要跳过标题

for r in range(1, nr):

id = k[0] +'_' + bytes(sheet.cell(r,0).value) + '_' + sheet.cell(r,1).value

bomc = sheet.cell(r,1).value

#time = sheet.cell(r,2).value

time = k[0]

worker = sheet.cell(r,3).value

admin = sheet.cell(r,4).value

mukuai = sheet.cell(r,5).value

ispl = sheet.cell(r,6).value

note = sheet.cell(r,7).value

values = (id, bomc, time, worker, admin, mukuai, ispl, note)

# 执行sql语句

cursor.execute(query, values)

# 关闭游标

cursor.close()

# 提交

database.commit()

# 关闭数据库连接

database.close()

# 打印结果

print ""

print "Done! "

print ""

columns = str(nc)

rows = str(nr)

print("%d rows,%d cols"%(sheet.nrows,sheet.ncols))

总结:做完这个小需求,就觉得python的学习道路路漫漫其修远兮!!!

python将excel导入mysql_【Python】将excel文件导入mysql数据库相关推荐

  1. hadoop 写入mysql_使用MapReducer将文件写入mysql 数据库

    自定义类 package DBOutFormat; import org.apache.hadoop.io.Writable; import org.apache.hadoop.mapred.lib. ...

  2. python亿级mysql数据库导出_Python之csv文件从MySQL数据库导入导出的方法

    Python之csv文件从MySQL数据库导入导出的方法 发布时间:2020-10-26 07:39:02 来源:脚本之家 阅读:53 作者:张行之 Python从MySQL数据库中导出csv文件处理 ...

  3. ExcelToMySQL-批量导入Excel文件到MySQL数据库的自动化工具

    ExcelToMySQL:批量导入Excel文件到MySQL数据库的自动化工具 简介 ExcelToMySQL 是一个可以批量导入excel到数据库(mysql/oracle/sqlserver)的自 ...

  4. scrapy爬虫储存到mysql_详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库

    获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫文件 字段文件items # Define here the models for your scraped items # # S ...

  5. Python Web开发框架之Django篇——二、Django连接MySQL数据库以及建表的操作

    二.Django连接MySQL数据库以及建表的操作 准备工作:安装Python访问MySQL的模块 一.修改project同名目录下面的__init__.py文件 二.修改project同名目录下面的 ...

  6. python解析json文件写入数据库_Python3实现将本地JSON大数据文件写入MySQL数据库的方法...

    本文实例讲述了Python3实现将本地JSON大数据文件写入MySQL数据库的方法.分享给大家供大家参考,具体如下: 最近导师给了一个yelp上的评论数据,数据量达到3.55个G,如果进行分析时直接使 ...

  7. 计算机毕业设计Python+django 宠物领养中心小程序(源码+系统+mysql数据库+Lw文档)

    项目介绍 据世界动物保护协会统计,全世界大概有5亿只流浪狗和散养的狗和大致同样数量的流浪猫,而这些主要源于主人的弃养.同时,在很多地区,狗和猫都处于散养状态,这部分的动物,也经常会变成流浪动物.猫和狗 ...

  8. 计算机毕业设计Python+django的零食销售商城网站(源码+系统+mysql数据库+Lw文档)

    项目介绍 ​随着人们生活条件的改善,人们对生活的追求也越来越高.在闲暇之时品尝上美味的零食,是当前很多人的一个休闲方式.当前临时市场鱼目混杂,种类繁多很多消费者不知道如何去选购更加美味可口的零食.尤其 ...

  9. 使用命令导入sql文件到mysql数据库时报Failed to open file错误的解决方案

    使用命令导入sql文件到mysql数据库时报Failed to open file错误的解决方案 参考文章: (1)使用命令导入sql文件到mysql数据库时报Failed to open file错 ...

  10. excel 导入mysql_如何将Excel文件导入MySQL数据库

    本文实例为大家分享了Excel文件导入MySQL数据库的方法,供大家参考,具体内容如下 1.简介 本博客给大家分享一个实用的小技能,我们在使用数据库时常常需要将所需的Excel数据添加进去,如果按照传 ...

最新文章

  1. 第五周项目一-三角形类雏形(5)
  2. python中break可以用在for和if中吗_Python的for和break循环结构中使用else语句的技巧...
  3. vim中Mapping already in use: LocalLeaderis, mode n错误解决的方法解释
  4. #ifndef/#define/#endif
  5. 美国Thinkfun的“编程三剑客”少儿编程从入门到精通
  6. ubuntu下集群设置静态ip
  7. (16)VHDL实现半加器与全加器
  8. dos命令窗口光标闪烁_10 分钟上手 Vim,常用命令大盘点
  9. 用matlab分析系统工程案例,系统工程ISMmatlab代码.doc
  10. 感觉csdn论坛不是很好用,感觉……
  11. 《视觉SLAM十四讲-第二版-ch8,OpenCV4报错及解决》
  12. 湖南省中职计算机应用教资面试流程?
  13. Tracup体验报告
  14. 总结 and 读后感之自控力 By 凯利·麦格尼格尔
  15. PMI-ACP敏捷项目管理辅导:敏捷开发之 4句敏捷宣言
  16. 贤者之路,Tensorrt的int8 calibration创建
  17. 直播+时尚跨界掀起新玩法,传统时装行业变革在即
  18. 步进电机整步、半步、细分波形理解
  19. 八数码问题的广度优先搜索方法
  20. C++面试基础知识点

热门文章

  1. 简易个人网站的搭建--基础准备工作(一)
  2. Android6.0以上应用在长时间在后台,因为内存不足导致系统回收内存,当再次启动应用出现Fragment重叠或者空白、异常解决方案(提供模拟内存不足导致系统回收内存的方案)。
  3. 微机原理与接口技术系列笔记(一)
  4. P4 程序设计语法学习
  5. 北京东物流,南顺丰速运
  6. Android 反编译APK详解
  7. 浅谈技术管理之团队管理
  8. 产品经理 - 产品设计方法论业务落地部分_包括流程产品文档方法论需求设计方法论
  9. 微信小程序的开发制作_搭建_工具_模板_一键生成
  10. 搭建私有云平台的一些随想