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

  • 时间:
  • 浏览:0
  • 来源:极速快3_快3棋牌_极速快3棋牌

    公司原采用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.30", 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 
30 
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/9309130.html

### 注意

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

笔者在操作过程中老出这种麻烦,报错如下:

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

# 防止最好的办法

    报错原因在于插入数据时,插入的信息字段与数据库字段不一致,原因的原因不可能 是"Excel表格与数据库中表形状不对应" 不可能 "脚本中的插入语句占据 纰漏" ,当认真核对字段信息后再次操作,即可防止!