通过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; ...
随机推荐
- SpringBoot整合MybatisPlus3.X之Wrapper(五)
官方文档说明: 以下出现的第一个入参boolean condition表示该条件是否加入最后生成的sql中 以下代码块内的多个方法均为从上往下补全个别boolean类型的入参,默认为true 以下出现 ...
- Jquery动态bind绑定已有函数,函数自动执行的问题解决方法
在bind后面的方法,不能带括号,带括号函数就自动执行了... <script> //通过子元素删除某行 function deleteRow() { var flag = confirm ...
- Android自定义控件:图形报表的实现(折线图、曲线图、动态曲线图)(View与SurfaceView分别实现图表控件)
图形报表很常用,因为展示数据比较直观,常见的形式有很多,如:折线图.柱形图.饼图.雷达图.股票图.还有一些3D效果的图表等. Android中也有不少第三方图表库,但是很难兼容各种各样的需求. 如果第 ...
- NLP预训练模型-百度ERNIE2.0的效果到底有多好【附用户点评】
ERNIE是百度自研的持续学习语义理解框架,该框架支持增量引入词汇(lexical).语法 (syntactic) .语义(semantic)等3个层次的自定义预训练任务,能够全面捕捉训练语料中的词法 ...
- 学习笔记02form
1.<form>为表单标签*如果要把数据提交到服务器,则需要将<input> <textarea> <select>等表单元素放到<from> ...
- MIT线性代数:10.4个基本子空间
- [2018-01-12] laravel中的MVC
路由里面可以做所有事情,但是真正的项目当中,路由只用来接收请求,并转发给控制器的方法进行处理 首先我们先了解一下 一.app/Http/routes路由的用法: 方法一. 这种方法写完后在控制器创建方 ...
- Unix/Linux 从哪儿来?那些改变世界的人们...
昨天看文章时发现自己对 linux 操作系统不够了解,还记得 17 年时听过老师的一些课,对 linux 的历史有一点了解,不过当时并没有记录笔记,现在已经忘的差不多了. 这次从网上找资料,又重新看了 ...
- day7-集合
一.定义变量是为了吹处理状态的变化,定义变量名是为了获取变量值.字符串.数字.列表.元组.字典都是为了更好的描述变量的状态1.可变不可变:变量名不变时,里面内容是否可以变化# 可变:列表.字典.修改变 ...
- Junit使用方法
Junit使用方法 步骤: 定义 一个测试类(测试用例) 建议 测试类名:被测试类名+Test 包名:xxx.xxx.xxx.test 测试方法 建议: 方法名:test测试的方法名 返回值: voi ...