公司原采用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 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()