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

  • 时间:
  • 浏览:2
  • 来源:大发快三_快三最高邀请码_大发快三最高邀请码

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

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

1)选用要导入到数据库中的对应表的组织结构,如下:

2)根据表组织结构采集好对应的Excel表格,如下:

 1 # -*- coding: utf-8 -*-
 2 # Author: kazihuo
 3 
 4 import pymysql
 5 import xlrd
 6 
 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 def open_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         return sheet
27     except:
28         print("locate worksheet in excel failed!")
29 
200 
31 def insert_deta():
32     sheet = open_excel()
33     cursor = db.cursor()
34     row_num = sheet.nrows
35     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

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

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

### 脚本参考链接 https://www.cnblogs.com/longbigbeard/p/920091200.html

### 注意

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

笔者在操作过程中出先或多或少麻烦,报错如下:

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

# 出理 方式

    报错导致 在于插入数据时,插入的信息字段与数据库字段不一致,导致 的导致 但是是"Excel表格与数据库中表组织结构不对应" 但是 "脚本中的插入语录居于纰漏" ,当认真核对字段信息后再次操作,即可出理 !