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

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

环境

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

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

 

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

通过Python将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 
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

相关文章: