通过Python将Excel表格信息导入数据库
前言
公司原采用Excel表格方式记录着服务器资产信息,随着业务的增加,相应的硬件资产也增加,同时物理机虚拟化出多台虚拟机,存在表格管理杂乱、变更资产信息不能及时相互同步, 为了紧跟时代的步伐,老大搞了个基于Django框架的资产管理平台,用于记录资产信息;
而我负责将服务器信息梳理及将其信息录入到资产管理平台,在整理好Excel的基础上,个人初步了解下Django,得知通过操作页面手工录入的信息将存储到MySQL的指定库的指定表中,为了高效信息录入,笔者将使用Python将Excel表格中的资产信息导入到数据库中!
环境
1)确定要导入到数据库中的对应表的结构,如下:

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

脚本
# -*- coding: utf-8 -*-
# Author: kazihuo import pymysql
import xlrd # 连接数据库
try:
db = pymysql.connect(host="10.2.5.200", user="root",
passwd="",
db="OPSINFO",
charset='utf8')
except:
print("could not connect to mysql server") def open_excel():
try:
book = xlrd.open_workbook("test.xlsx")
# test.xlsx是表格文件,当其不与此脚本在同一目录下时,需要写上其绝对路径
except:
print("open excel file failed!")
try:
sheet = book.sheet_by_name("ops-info")
# ops-info是表sheet名称,不理解的可看上图;
return sheet
except:
print("locate worksheet in excel failed!") def insert_deta():
sheet = open_excel()
cursor = db.cursor()
row_num = sheet.nrows
for i in range(1, row_num):
# 第一行是标题名,对应表中的字段名所以应该从第二行开始,计算机以0开始计数,所以值是1
row_data = sheet.row_values(i)
value = (row_data[0], row_data[1], row_data[2], row_data[3], row_data[4], row_data[5])
# value代表的是Excel表格中的每行的数据
print(i)
sql = 'INSERT INTO CN2Info_machins(Host,IP,IdracIP,Position,Rack,ST) VALUES(%s,%s,%s,%s,%s,%s)'
cursor.execute(sql, value) # 执行sql语句
db.commit()
cursor.close() # 关闭连接 open_excel()
insert_deta()
insert.py
### 运行脚本后,可在数据库中看到对应信息,如下:

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

### 注意
因为表中的id是自增字段,故笔者在Python脚本中插入数据时,只写了对应需要插入的字段信息!
报错
笔者在操作过程中出现一些麻烦,报错如下:
pymysql.err.InternalError: (1136, "Column count doesn't match value count at row 1")

# 解决方法
报错原因在于插入数据时,插入的信息字段与数据库字段不一致,导致的原因可能是"Excel表格与数据库中表结构不对应" 或者 "脚本中的插入语句存在纰漏" ,当认真核对字段信息后再次操作,即可解决!
通过Python将Excel表格信息导入数据库的更多相关文章
- excel表格数据导入数据库Oracle
方法一: 1.创建数据表 CREATE TABLE T_USER ( ID VARCHAR2(32) primary key, NAME VARCH ...
- SpringBoot通过Ajax批量将excel中数据导入数据库
Spring Boot通过Ajax上传Excel并将数据批量读取到数据库中 适合场景:需要通过excel表格批量向数据库中导入信息 操作流程 [1]前端上传一个excel表格 [2] 后端接收这个ex ...
- python 对Excel表格的写入
python对Excel表格写入需要导入xlrd ,和xlutils两个库 from xlrd import open_workbook from xlutils.copy import copy o ...
- Java实现Excel数据批量导入数据库
Java实现Excel数据批量导入数据库 概述: 这个小工具类是工作中的一个小插曲哦,因为提数的时候需要跨数据库导数... 有的是需要从oracle导入mysql ,有的是从mysql导入oracle ...
- python读取Excel表格文件
python读取Excel表格文件,例如获取这个文件的数据 python读取Excel表格文件,需要如下步骤: 1.安装Excel读取数据的库-----xlrd 直接pip install xlrd安 ...
- Python读取Excel表格
前言:需要进行自动化办公或者自动化测试的朋友,可以了解下此文,掌握Python读取Excel表格的方法. 一.准备工作: 1.安装Python3.7.0(官网下载安装包) 2.安装Pycharm(官网 ...
- 将Excel中数据导入数据库(三)
上篇文章将Excel中数据导入数据库时,将从Excel读入的数据均转换成了数据库相应字段的类型,其实这是没有必要的,因为对于数据库各种类型的插入,均可以字符串格式插入.比如表WQ_SWMSAR_A字段 ...
- 将Excel中数据导入数据库(二)
在上篇文章中介绍到将Excel中数据导入到数据库中,但上篇文章例子只出现了nvachar类型,且数据量很小.今天碰到将Excel中数据导入数据库中的Excel有6419行,其中每行均有48个字段,有i ...
- 将Excel中数据导入数据库(一)
在工作中经常要将Excel中数据导入数据库,这里介绍一种方法. 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: Excel中数据导入数据库帮助类如下: using System; ...
随机推荐
- 建议收藏:.net core 使用导入导出Excel详细案例,精心整理源码已更新至开源模板
还记得刚曾经因为导入导出不会做而发愁的自己吗?我见过自己前同事因为一个导出改了好几天,然后我们发现虽然有开源的库但是用起来却不得心应手,主要是因为百度使用方案的时候很多方案并不能解决问题. 尤其是尝试 ...
- Zabbix 四 主动模式
本次的主机192.168.131.8 被动模式. 将zabbix4.4.4的源码包放过去,解压安装依赖准备编译安装,并创建zabbix账户. tar -xf zabbix-4.4.0.tar.gz & ...
- CSPS模拟 83
紧张起来,集训已过半! 稍微有点惆怅.. T1 什么玩意,神仙树形dp? 没思路,先去T2. (遇到难题就绕过去是真的爽啊) T2 $n^2$暴力很好打 组合数是不是有规律? 找一下规律,发现十分眼熟 ...
- docker已运行容器添加或修改端口映射
# 不推荐方法:将原来的容器提交成镜像,然后利用新的建立的镜像重新建立一个带有端口映射的容器# 推荐方法:## 查看id 就是 容器的 hash_of_the_container 数值 docker ...
- 2019.11.11 洛谷月赛t3
题目背景 由于Y校的老师非常毒瘤,要求\(zhouwc\)在\(csp\)考前最后\(3\)天参加期中考,\(zhouwc\)非常生气,决定消极考试,以涂完卡但全错为目标.现在\(retcarizy\ ...
- ElasticSearch(二):文档的基本CRUD与批量操作
ElasticSearch(二):文档的基本CRUD与批量操作 学习课程链接<Elasticsearch核心技术与实战> Create 文档 支持自动生成文档_id和指定文档_id两种方式 ...
- 46 Linden Street ACT I
Execute me. My name is Richard Stewart. I’m a photographer. May I take a picture of you and your lit ...
- 腾讯开源进入爆发期,Plato助推十亿级节点图计算进入分钟级时代
腾讯开源再次迎来重磅项目,14日,腾讯正式宣布开源高性能图计算框架Plato,这是在短短一周之内,开源的第五个重大项目. 相对于目前全球范围内其它的图计算框架,Plato可满足十亿级节点的超大规模图计 ...
- 如何在HTML中设置字体颜色,你知道这几种方式吗?
color设置字体颜色 在color设置字体颜色之前,我们首先了解color在CSS中有几种取值方式,一共有4种方式,若有不全还请在评论区告知谢谢,4种方式如下: 十六进制.十进制. 英文单词.十六进 ...
- 类型擦除真的能完全擦除一切信息吗?java 泛型揭秘
背景 我们都知道泛型本质上是提供类型的"类型参数",它们也被称为参数化类型(parameterized type)或参量多态(parametric polymorphism).其实 ...