python导入excel表格-通过Python将Excel表格信息导入数据库

前言

公司原采用Excel表格方式记录着服务器资产信息,随着业务的增加,相应的硬件资产也增加,同时物理机虚拟化出多台虚拟机,存在表格管理杂乱、变更资产信息不能及时相互同步, 为了紧跟时代的步伐,老大搞了个基于Django框架的资产管理平台,用于记录资产信息;

而我负责将服务器信息梳理及将其信息录入到资产管理平台,在整理好Excel的基础上,个人初步了解下Django,得知通过操作页面手工录入的信息将存储到MySQL的指定库的指定表中,为了高效信息录入,笔者将使用Python将Excel表格中的资产信息导入到数据库中!

环境

1)确定要导入到数据库中的对应表的结构,如下:

1098305-20190703183159866-1625442928.png

2)根据表结构整理好对应的Excel表格,如下:

1098305-20190703183205878-480506817.png

脚本

ContractedBlock.gif

ExpandedBlockStart.gif

1 #-*- coding: utf-8 -*-

2 #Author: kazihuo

3

4 importpymysql5 importxlrd6

7 #连接数据库

8 try:9 db = pymysql.connect(host="10.2.5.200", user="root",10 passwd="123456",11 db="OPSINFO",12 charset='utf8')13 except:14 print("could not connect to mysql server")15

16

17 defopen_excel():18 try:19 book = xlrd.open_workbook("test.xlsx")20 #test.xlsx是表格文件,当其不与此脚本在同一目录下时,需要写上其绝对路径

21 except:22 print("open excel file failed!")23 try:24 sheet = book.sheet_by_name("ops-info")25 #ops-info是表sheet名称,不理解的可看上图;

26 returnsheet27 except:28 print("locate worksheet in excel failed!")29

30

31 definsert_deta():32 sheet =open_excel()33 cursor =db.cursor()34 row_num =sheet.nrows35 for i in range(1, row_num):36 #第一行是标题名,对应表中的字段名所以应该从第二行开始,计算机以0开始计数,所以值是1

37 row_data =sheet.row_values(i)38 value = (row_data[0], row_data[1], row_data[2], row_data[3], row_data[4], row_data[5])39 #value代表的是Excel表格中的每行的数据

40 print(i)41 sql = 'INSERT INTO CN2Info_machins(Host,IP,IdracIP,Position,Rack,ST) VALUES(%s,%s,%s,%s,%s,%s)'

42 cursor.execute(sql, value) #执行sql语句

43 db.commit()44 cursor.close() #关闭连接

45

46

47 open_excel()48 insert_deta()

insert.py

### 运行脚本后,可在数据库中看到对应信息,如下:

1098305-20190703183824992-247590324.png

### 页面也出现对应信息,如下:

1098305-20190703183532886-1850727050.png

### 注意

因为表中的id是自增字段,故笔者在Python脚本中插入数据时,只写了对应需要插入的字段信息!

报错

笔者在操作过程中出现一些麻烦,报错如下:

pymysql.err.InternalError: (1136, "Column count doesn't match value count at row 1")

1098305-20190703183638078-1558029927.png

# 解决方法

报错原因在于插入数据时,插入的信息字段与数据库字段不一致,导致的原因可能是"Excel表格与数据库中表结构不对应" 或者 "脚本中的插入语句存在纰漏" ,当认真核对字段信息后再次操作,即可解决!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值