通過Python將Excel表格信息導入數據庫


前言

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

 

### 運行腳本后,可在數據庫中看到對應信息,如下:

 

### 頁面也出現對應信息,如下:

 

### 注意

    因為表中的id是自增字段,故筆者在Python腳本中插入數據時,只寫了對應需要插入的字段信息!

報錯

筆者在操作過程中出現一些麻煩,報錯如下:

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

 

# 解決方法

    報錯原因在於插入數據時,插入的信息字段與數據庫字段不一致,導致的原因可能是"Excel表格與數據庫中表結構不對應" 或者 "腳本中的插入語句存在紕漏" ,當認真核對字段信息后再次操作,即可解決!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM