Python Excel导入Mysql的通用方法

news2025/7/18 9:20:35

文章目录

  • 一、前言
  • 二、实现


一、前言

此代码将导入部分尽量通用,仅配置下面两项就可以进行导入了:

  1. 从哪个excel导入到哪个mysql表
    在程序中配置
    在这里插入图片描述

  2. 他们之间的字段如何对应
    写在mysql表中
    在这里插入图片描述
    ps:id,create_time,update_time 这种常用字段写死在程序中即可


二、实现

ps:程序中的 mysql导入方法可以用pymysql自己实现或者参考此处
https://blog.csdn.net/weixin_43721000/article/details/124803077

import datetime
import json

from utils.MysqlOp import MySqlOp
from config import Config as cf
import pandas as pd
import numpy as np


def isNaNo(sth):
    '''
    NaN、None或者空字符串返回True,其他情况返回False
    '''
    if not sth:
        return True
    if isinstance(sth, float):
        if np.isnan(sth):
            return True
    return False


def importExcelToMysql(excel_path, mysql_table):
    '''
    excel表导入mysql
    :param excel_path: 
    :param mysql_table: 
    :return: 
    '''

    # 读取excel
    df = pd.read_excel(excel_path)

    # 创建mysql连接
    msq = MySqlOp(host=cf.MYSQL_HOST, port=cf.MYSQL_PORT, username=cf.MYSQL_USER, password=cf.MYSQL_PWD, db=cf.MYSQL_DB)

    # 执行sql
    data_field_list = msq.select(f'''
                show full columns from `{mysql_table}`;
            ''')
    print(data_field_list)

    for i in range(df.shape[0]):

        print(f'当前进度: {i + 1} / {df.shape[0]}')

        mysql_field_list = []
        excel_value_list = []
        for data_field in data_field_list:

            # mysql的字段名
            mysql_field = data_field[0]
            # mysql的字段类型
            mysql_field_type = data_field[1]
            # excel的字段名存在mysql的字段注释中
            excel_field = data_field[-1]

            # 跳过注释与excel字段对应不上的情况
            if excel_field and excel_field not in df.columns:
                continue

            # 获取excel每行字段对应的值
            excel_value = df.loc[i, excel_field]
            if isNaNo(excel_value):
                excel_value = 'null'
            elif mysql_field_type.startswith(("varchar", "datetime")):
                excel_value = json.dumps(excel_value, ensure_ascii=False)

            # print(mysql_field, excel_field, excel_value)
            mysql_field_list.append(mysql_field)
            excel_value_list.append(excel_value)

        sql = f'''
                INSERT INTO `{mysql_table}`
                ({', '.join(mysql_field_list)}, {"create_time"}, {"update_time"})
                VALUES
                ({', '.join(excel_value_list)}, {json.dumps(str(datetime.datetime.now()), ensure_ascii=False)}, {json.dumps(str(datetime.datetime.now()), ensure_ascii=False)})
            '''
        # print(sql)
        msq.operate(sql)


if __name__ == '__main__':

    excel_path = r'E:\oa书\1\总详情.xlsx'       # 从哪里导
    mysql_table = 'data'                       # 导哪里去

    importExcelToMysql(excel_path, mysql_table) # 导


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于IDEA创建SpringBoot项目并进行入门分析

基于IDEA创建SpringBoot项目并进行入门分析 文章目录基于IDEA创建SpringBoot项目并进行入门分析SpringBoot 项目创建创建Module项目结构分析SpringBoot 项目启动分析启动入口启动过程概要分析SpringBoot 快速入门分析业务描述API设计分析代码编写及运行运行过程中的BUG分析Spri…

单商户商城系统功能拆解26—营销中心—限时秒杀

单商户商城系统,也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法,例如拼团,秒杀,砍价,包邮…

数电学习(六、时序逻辑电路)(三)

文章目录时序逻辑电路的设计方法同步时序逻辑电路的设计方法一般步骤改进步骤例:蚂蚁走迷宫背景分析继续编码状态,然后写出状态图,然后卡诺图化简,得到方程设计总结时序逻辑电路的设计方法 同步时序逻辑电路的设计方法 一般步骤…

2022最新SpringCloud面试题附完整答案

一、选择题 1.启动Ribbon的类注解是: ( ) A RibbonClient B EnableClient C EnableDisscoveryClient D Ribbon 2.下面哪个注解不是SpringbootApplication包含的默认属性值:( ) A: Configuration B: EnableAutoConfiguration C: ComponentSc…

【LINUX】Linux最常用的20个基本指令 介绍~分析

什么是 Linux ​ Linux 是一款基于 GNU 通用公共许可协议 的 自由和开放源代码 的类UNIX操作系统,该操作系统的内核由 Linus Torvalds 在1991年首次发布。之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。 但是,严格来…

springboot充电桩综合管理系统

目录 1 绪论 1 1.1 课题背景 1 1.2 课题研究现状 1 1.3 初步设计方法与实施方案 2 1.4 本文研究内容 2 2 系统开发环境 4 2.1 Java技术 4 2.2 JSP技术 4 2.3 B/S模式 4 2.4 MyEclipse环境配置 5 2.5 MySQL环境配置 5 2.6 SSM框架 6 3 系统分析 7 3.1 系统可行性分析 7 3.1.1 经…

基于 BP 神经网络特征提取的指纹识别应用(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑…

【每日训练】排序子序列

目录 题目链接: 输入输出描述&&测试用例: 解析: 程序: 题目链接: 排序子序列_牛客笔试题_牛客网 (nowcoder.com) 输入输出描述&&测试用例: 测试用例: 输入: 6 1…

设计模式之美总结(重构篇)

title: 设计模式之美总结(重构篇) date: 2022-10-27 17:31:42 tags: 设计模式 categories:技术书籍及课程 cover: https://cover.png feature: false 文章目录1. 概述1.1 重构的目的:为什么要重构(why)?1.…

10月业务安全月报 | 美国将奇虎360和知道创宇列入黑名单;丰田泄露30万用户信息;苹果曝严重漏洞

导语:随着数字化的深入普及,业务愈加开放互联。企业的关键数据、用户信息、基础设施、运营过程等均处于边界模糊且日益开放的环境中,涉及利益流和高附加值的业务面临多样的安全隐患,随时可能遭遇损失,进而影响企业运营…

HashMap底层源码分析

文章目录HashMap底层源码分析1.观察HashMap成员变量1.1 HashMap的主要成员变量1.2 HashMap的构造方法1.3 put方法HashMap底层源码分析 前言 : 上文我们已经将哈希表学完了,下面就来简单的看一下源码,就结束我们的Map和Set 的学习   1.观察H…

灰度级形态学 - 顶帽变换和底帽变换

目录 1. 介绍 2. 代码实现 1. 介绍 顶帽变换和底帽变换就是图像的加减和开闭运算的结合 顶帽变换的公式为:原图 - 原图的开运算 这里结合开运算的几何图形解释来介绍顶帽变换。 因为开运算是结构元从下往上推动的过程,所以会删除图像灰度值相对周围高…

Dom对象总结案例实操(第二十课)

Dom对象总结案例实操(第二十课) 今天文章有点长 第一部分:回顾之前Dom对象我用了四篇文章对他进行了分开讲述Dom对象的用途,今天用几个案例实操一下. 之前我们Dom对象中了解过下面的内容 Dom对象的定义?Dom对象的节点操作,了解到了父节点 子节点 第一个 子节点 最…

利用Postman测试全屋智能接口

文章目录一、Postman概述二、利用Postman测试全屋智能接口(一)移动应用开发平台API说明V2.0(二)下载Postman(三)启动Postman(四)测试用户登录接口1、查看用户登录接口说明2、查看登录…

信号完整性测试

信号完整性测试----持续更新中示波器三要素:带宽采样率存储深度IIC信号测试:SPI信号测试USART信号测试RS232信号测试RS485信号测试CAN信号测试PWM信号测试示波器三要素: 示波器三个重要参数:带宽、采样率、存储深度 带宽 示波器的带宽&…

C语言实现windows,linux双版本下的进度条小程序,快来试一试吧

文章目录C语言缓冲区🚀1.输入缓冲区🍇模拟登录密码场景🍇从键盘将内容输入到内存的真正过程🍇解决方法:清空输入缓冲区🍉清掉一个字符🍉清空输入缓冲区所有字符🚀2.用户C语言级别的缓…

【jenkins部署冲突报错】一定要看!!!!!

背景 最近接手了新的项目,他的代码仓库的分支有点乱,dev、uat、master三个分支代码不同步,差别很大,甚至功能有些也不一样,所以,就导致在合并代码时要注意,最好新切一个分支A(同步m…

inveta PLSB 点线面体 示例工程

https://github.com/inveta/demo/blob/main/Resource/demo.md点线面体生成 POI(点)ps.emitMessage(["spawn-POI","location:X0 Y0 Z0", // cm"icon:\uE998", // char"title:POI标题", // string"color…

单独用HTML javascript CSS 写三版99乘法表,我就是班里最靓的仔

☆ 99乘法表,这个从小学就让我们开始产生肌肉记忆的知识点,伴随一生。而一旦开始学习软件开发知识,99乘法表将是一个基础中不可逃避的巩固升级作业。 ☆ 口算背诵相信大家已经滚瓜烂熟了,一一得一,二二得四&#xff…

【Linux】超好用的编译工具 —— gcc/g++

文章目录 前言 一、安装gcc/g 二、背景知识 三、gcc如何完成 1.预处理(进行宏替换) 2.编译(生成汇编) 3.汇编(生成机器可识别代码) 4.连接(生成可执行文件或库文件) 5.记忆选项的小技…