#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2020/11/20 14:30
# @Author  : lumia98@vip.qq.com
# @File    : Excel
# @Software: PyCharm
# 批量导入Excel数据到MySQL
import xlrd
import pymysql

class Add_Excel_Data_To_MySQL(object):
    """
    Excel表格数据批量导入到MySQL库
    """

    # pymysql连接
    def conn_pymysql(self, host, dbuser, dbpass, dbname):
        # 连接MySQL
        self.conn = pymysql.connect(host=host, user=dbuser, passwd=dbpass, db=dbname)
        # 获得游标对象, 用于逐行遍历数据库数据
        self.cursor = self.conn.cursor()

    def excel_path(self, file_path, excle_table_name):
        self.excel = xlrd.open_workbook(file_path)
        self.sheet_name = self.excel.sheet_by_name(excle_table_name)

    # 循环Excel表格数据,并且写入到MySQL
    def for_excel_insert_mysql(self, db01, db02, db03, db04, db05, db06, db07):
        """
        如果有其他字段请添加
        :param db01:  MySQL表里的第一个需要手动添加数据的字段
        :param db02:  MySQL表里的第二个需要手动添加数据的字段
        :param db03:  MySQL表里的第三个需要手动添加数据的字段
        :param db04:  MySQL表里的第四个需要手动添加数据的字段
        :param db05:  MySQL表里的第五个需要手动添加数据的字段
        :param db06:  MySQL表里的第六个需要手动添加数据的字段
        :param db07:  MySQL表里的第七个需要手动添加数据的字段
        :return:
        """
        # 插入到MySQL
        self.query = "INSERT INTO machine ({}, {}, {}, {}, {}, {}, {}) VALUES (%s, %s, %s, %s, %s, %s, %s)".format(db01,db02,db03,db04,db05,db06,db07)

        # 创建一个for循环迭代读取xls文件每行数据的;
        # 从第二行开始导入;
        # 如果没有标题,则1改成0
        for r in range(1, self.sheet_name.nrows):
            # 导入7列Excel数据(从第一列开始导入);
            # 如果导入的列增加或者减少,请根据实情;
            excel_01 = self.sheet_name.cell(r, 0).value,
            excel_02 = self.sheet_name.cell(r, 1).value,
            excel_03 = self.sheet_name.cell(r, 2).value,
            excel_04 = self.sheet_name.cell(r, 3).value,
            excel_05 = self.sheet_name.cell(r, 4).value,
            excel_06 = self.sheet_name.cell(r, 5).value,
            excel_07 = self.sheet_name.cell(r, 6).value

            self.values = (excel_01, excel_02, excel_03, excel_04, excel_05, excel_06, excel_07)

            # 执行sql语句
            self.cursor.execute(self.query, self.values)

        # 提交
        self.conn.commit()
        # 关闭游标
        self.cursor.close()
        # 关闭数据库连接
        self.conn.close()

        self.columns = str(self.sheet_name.ncols)
        self.rows = str(self.sheet_name.nrows)

        print("一共导入了{}列, {}行数据!".format(self.columns, self.rows))


if __name__ == '__main__':
    a = Add_Excel_Data_To_MySQL()

    # 连接MySQL
    a.conn_pymysql(host="172.211.13.11",dbuser="root",dbpass="123456",dbname="manage")

    # Excel文件路径
    a.excel_path(r"C:\Users\Super\Desktop\machine.xls", "table")

    # Excel数据插入MySQL
    a.for_excel_insert_mysql(
        db01="cname_id",
        db02="machine_name",
        db03="machine_sn",
        db04="monitor_name",
        db05="monitor_sn",
        db06="to_username",
        db07="depart_id"
    )
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐