• 通过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表格与数据库中表结构不对应" 或者 "脚本中的插入语句存在纰漏" ,当认真核对字段信息后再次操作,即可解决!

  • 相关阅读:
    关于 数据库中 读写 Blob 字段的正确做法。
    C# wave mp3 播放器探寻
    公布Delphi热键注册源码
    Windows 下 Eclipse 集成开发环境演绎
    VS2012 MSHA 文件制做程序
    Erlang 学习笔记 (二) Debugger工具的使用
    Excel里数字列号转换为字符标签列
    串或序列的rotate操作
    64K动画技术剖析:Mod音乐的制作和使用
    64K动画 技术剖析之:Metaball
  • 原文地址:https://www.cnblogs.com/kazihuo/p/11128248.html
Copyright © 2020-2023  润新知