python入门学习(excel导入mysql)

Python Excel导入Mysql的通用方法 此代码将导入部分尽量通用,仅配置下面两项就可以进行导入了:从哪个excel导入到哪个mysql表在程序中配置他们之间的字段如何对应写在mysql表中ps:id,create_time,update_time 这种常用字段写死在程序中即可。 阅读详情

背景说明:

基于Jira设计了一套研发的KPI考核的机制,主要采用任务+工时的形式,分为工作量+质量+规范的考核体系。
数据都从Jira导出,经过规则计算后,生成对应的每个人的考核数据和分值。
现在是前期探索,所以可能中间算法或者数据来源都有变更,目前还不适合编码固定算法,所以现在先使用excel的透视表功能。
将基础数据放在A.xlsx,透视表在B.xlsx中,数据源指定到A。这样以后A的基础数据更新后,B直接刷新透视表即可变为最新数据。
现在问题是员工希望了解自己的基础数据,在excel中不太方便查询,所以想要自动导入数据库中,通过BI系统可以让员工自行查看分析基础数据。

前置条件:

Jira和BI都是现有的系统,没有研发人员,基础数据A是由研发助理手动处理的。我设想最简单的方法就是让助理通过web直接上传至服务器,服务器上写一个脚本解析excel并且插入对应的数据表中,BI就可以直接连接数据库提供查询界面了。
shell脚本解析和操作数据库比较困难,所以就把目光放在了python身上。

硬件环境:

  • 操作系统:CentOS 6.5
  • 数据库:Mysql 5.6.41
  • 编程语言:Python 2.7.3 Python 开发者年度调查报告,Python3 采用率超 84% 推荐使用Python3
  • 编码工具:Vim (只是一段很小的脚本,就直接在服务器上用vim编写了,但是linux默认的颜色渲染还是很好的,如图)

在这里插入图片描述

编码过程要点

1. 头部引入
import MySQLdb as mdb # mysql
import os
import sys
import re
import xlrd # 读取 excel

引用要产生效果,需要安装对应的包
python提供了很多的外部包调用来解决问题,我们本次的重点是excel 和myslq 所以需要引用 MySQLdb 和 xlrd,在系统命令行执行以下命令即可:

pip install MySQL-python
pip install xlrd

这样就安装了mysql和excel的支持

2. excel读取
wb = xlrd.open_workbook('%s%s' %(filepath,excel.split(',')[0]))
s01 = wb.sheet_by_name('S01-本月workpoint原始数据'.decode('utf-8'))
s02 = wb.sheet_by_name('S02-上月跨本月工时原始数据'.decode('utf-8'))
s03 = wb.sheet_by_name('S03-本月跨下月工时原始数据'.decode('utf-8'))
s04 = wb.sheet_by_name('S04-在线问题工时原始数据'.decode('utf-8'))

一行代码 xlrd.open_workbook 就直接打开了excel ,wb.sheet_by_name就直接将行列数据读取为数组,完全没有废话。

3. mysql写入

mysql的操作比较常规,主要分为两大块,连接mdb.connect(),游标connect.cursor()
connect负责建立连接通道,cursor负责具体操作执行

# 建立连接
conn = mdb.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='dbname', charset='utf8')

# 使用cursor()方法获取操作游标
cursor = conn.cursor()

# 执行插入语句
sSql = 'insert into z_kpi_s01 (k_month,col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10,col_11,col_12) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'
cursor.executemany(sSql,values)
4. 整体代码

整体代码中还使用到了:

  • for循环
  • if判断
  • 正则判断
  • 打印带参数文字
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import MySQLdb as mdb
import os
import sys
import re
import xlrd

conn = mdb.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='dbname', charset='utf8')

# 使用cursor()方法获取操作游标
cursor = conn.cursor()
# 因该模块底层其实是调用CAPI的,所以,需要先得到当前指向数据库的指针。

try:
    # 读取Excel文件,并且确认是否需要导入
    needImportXlsx = []

    filepath = '/data/'
    pathDir = os.listdir(filepath)
    print 'list size is : %s' % len(pathDir)
    for allDir in pathDir:
        fnCount = cursor.execute('select filename from fileattachment where id=%s' % allDir)
        filename = cursor.fetchone()[0]

        canMatch = re.match(r'\d{6}', filename)
        if not (canMatch):
            continue

        tmpCount = cursor.execute('select * from z_kpi_s01 where k_month=%s' % filename)
        print '%s tmp count is : %s ' % (filename, tmpCount)
        if tmpCount == 0:
            needImportXlsx.append(allDir + ',' + filename)

    if len(needImportXlsx) == 0:
        print '!!!no file need import!!!'
        sys.exit()

    print 'all need import xlsx are : %s ' % needImportXlsx

    for excel in needImportXlsx:
        wb = xlrd.open_workbook('%s%s' % (filepath, excel.split(',')[0]))
        s01 = wb.sheet_by_name('S01-本月workpoint原始数据'.decode('utf-8'))
        s02 = wb.sheet_by_name('S02-上月跨本月工时原始数据'.decode('utf-8'))

        print 's01 has col %d row %d \n s02 has col %d row %d ' % (
            s01.ncols, s01.nrows, s02.ncols, s02.nrows)

        # s01 insert mysql
        values = []

        for i in range(s01.nrows):
            if i == 0:
                continue
            value = s01.row_values(i)[:12]
            value.insert(0, excel.split(',')[1])
            values.append(value)

        sSql = 'insert into z_kpi_s01 (k_month,col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10,col_11,col_12) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'
        cursor.executemany(sSql, values)

        # s02 insert mysql
        values = []

        for i in range(s02.nrows):
            if i == 0:
                continue
            value = s02.row_values(i)[:31]
            value.insert(0, excel.split(',')[1])
            values.append(value)

        sSql = 'insert into z_kpi_s02 (k_month,col_1,col_2,col_3,col_4,col_5,col_6,col_7,col_8,col_9,col_10,col_11,col_12,col_13,col_14,col_15,col_16,col_17,col_18,col_19,col_20,col_21,col_22,col_23,col_24,col_25,col_26,col_27,col_28,col_29,col_30,col_31) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'
        cursor.executemany(sSql, values)

    # 如果没有设置自动提交事务,则这里需要手动提交一次
    conn.commit()
except:
    import traceback

    traceback.print_exc()
    # 发生错误时会滚
    conn.rollback()
finally:
    # 关闭游标连接
    cursor.close()
    # 关闭数据库连接
    conn.close()

总结

在这个之前还从来没有写过Python,写整体代码大概花了2个小时左右,其他时间花在服务器上面的安装和一些权限上。整体感觉Python的优势很明显,作为一种粘合代码,执行一些Shell脚本比较难实现的功能,是非常方便的。语法也很简单,但是对于我这样的Java开发者有时候习惯性的 {} 和 ; 反而是错误。

参考

主要参考了这两篇文章:
Python连接MySQL数据库
python脚本实现excel和mysql数据库表的导入导出

Python如何将Excel数据导入到MySQL数据库?详细教程与实战示例 大家好!今天,我们将一起学习如何使用Python将Excel中的数据导入到MySQL数据库中。这一技能在数据仓库建设、数据迁移和数据分析等领域都有广泛的应用。接下来,我将从安装必要的库开始,逐步带领大家完成整个导入过程。 阅读详情

相关推荐

利用python将excel数据导入mySQL

主要用到的库有 xlrd和 pymysql, 注意pymysql不支持python3 篇幅有限,只针对主要操作进行说明 连接数据库 首先pymysql需要连接数据库,我这里连接的是本地数据库(数据库叫lds714610)。 conn = connect( host='localhost', port=3306, database='lds714610', user='root...

Python学习Q群696455390 2407

Python数据分析之读取Excel数据并导入数据库

入职新公司两个多月,发现这边的数据基础很差,没有维度建模的数仓,很多数据甚至没有系统承载,大量的Excel表,大量的人工处理工作,现阶段被迫“面向Excel”编程。本文主要介绍使用Python读取Excel数据并导入数据库的方法,供各位小伙伴参考。Python可以通过一些非常实用的包,如pandas,numpy等,对数据进行清洗,整理分析,合理利用Python可以提高我们处理分析数据的效率。

zhangliushi的博客 6038

Python3将excel中的数据导入mysql数据库

import pymysql # xlrd 为 python 中读取 excel 的库,支持.xls 和 .xlsx 文件 # import xlrd # openpyxl 库支持 .xlsx 文件的读写 from openpyxl.reader.excel import load_workbook from builtins import int #cur 是数据库的游标链接,path 是 ...

Anwel的博客 7221

通用Excel模板导入MySQL数据库的Python实现(附完整源码)

本文通过完整的代码实现和详细的原理分析,展示了通用Excel导入MySQL的解决方案。重点解析了数据类型自动映射、空值处理、自动建表等核心技术点,并提供了程序执行的时序流程说明。实际应用中可根据具体需求扩展数据校验、增量导入等功能,提升系统的健壮性和扩展性。点击下载。

软件工程师文艺 1210

python实现自动导入excel数据到MySQL中

最近工作遇到了把excel数据自动导入到MySQL的需求,在考虑了kettle后,不太容易实现导入excel数据自动生成表的问题,于是乎,把解决方法转移到了python,结果python确有实现办法,喜出望外的解决了这个需求。 现在有一个文件夹,里面是我存放的一批需要导入数据库的excel文件。 首先我需要获取这个文件夹所有文件的路径,存放到list中,再通过循环的方式读取文件,一个一个的把e...

zhengzhiyuan14的博客 1689

python 多excel导入到mysql中去

场景:文件夹下有N多excel,每个excel中有1个sheet,sheet页中首行为表格的列头名 实现:将以上所有表格导入到mysql中去,以文件名命名为表名,以列头名命名为字段名 细节:将所有字段处理成字符串,其中半角"处理成了全角”    等 不足:…… #!/usr/bin/python # -*- coding: UTF-8 -*- import xlrd imp

c_enhui的专栏 2724

Python pandas读取Excel 数据写入到数据库

Python pands读取Excel 数据写入到数据库

qq_41982570的博客 4259

Python导入Excel数据到MySQL数据库

本文介绍了如何使用Python的pandas和sqlalchemy库将Excel数据导入到MySQL数据库中。我们首先使用pandas的read_excel()函数读取Excel文件并将其转换为pandas数据帧。然后,我们使用sqlalchemy的create_engine()函数创建与MySQL数据库的连接。最后,我们使用pandas的to_sql()函数将数据从pandas数据帧导入到MySQL数据库中。

这家伙很懒,什么都没有留下 4855

用python将excel快速导入mysql,10万数据2秒内导入

一、导入步骤: ① 在mysql建立excel对应的字段的table; ② python在每次导入前会将table数据清空(也可以删除); ③ 用python将excel打开逐条导入mysql; 二、导入代码: ① 连接数据库: def mysql_link(de_name): try: db = pymysql.connect(host=“localhost”, user=“root”, pas...

weixin_43509595的博客 2997

白盒测试逻辑覆盖之谓词覆盖、子句覆盖、三类有效字句覆盖等知识点

本篇笔记会简化书本上的概念,用容易理解的方式来说明,有些例子打字麻烦,我会直接放图片! 目录 基础知识: 谓词覆盖predicate coverage 子句覆盖 clause coverage 组合覆盖 combinatorial coverage 有效字句覆盖Active Clause Coverage 广义有效子句覆盖(General Active Clause Coverage) 相关性有效子句覆盖(Correlated Active Clause Coverage) 限制性有效

weixin_46019681的博客 2664

自适应滤波算法综述

自适应滤波算法综述

xdzhujy的博客 5万+

python读取excel并导入mysql

python读取excel

yuannaiqing的博客 4868

Android Camera性能优化概述

做camera性能优化方面的工作有几年了,想写一篇文章简单介绍一下其中涉及到的具体技术,这篇文章会大概介绍一下涉及到的技术。

weixin_42136255的博客 4023

Excel中的数据如何导入MySQL

首先是使用工具来完成,常见的比较成熟的数据库管理软件都有这个功能,MySQL Workbench、Navict、DataGrip、DBeaver。比如我excel只有name和description两列数据,而库表中要四个字段,只管按csv的顺序分给表中的字段即可,其余字段没有就空着,不用管。有的可视化数据库连接工具不支持load data local infile指令,换个命令行窗口执行SQL就行。

llg___的博客 1万+

小米万兆路由器里的Docker安装可道云(Kodexplorer)私有网盘

小米2022年12月份发布了万兆路由器,里面可以使用Docker。 今天尝试在小米的万兆路由器里安装[可道云](http://kodcloud.com/)(Kodexplorer)私有网盘。

engchina的专栏 1万+

全新YOLO26有效涨点改进专栏目录 | 本专栏持续更新500+篇内容 | 包含各种卷积、主干网络、各种注意力机制、检测头、损失函数、小目标检测改进、二次创新模块、独家创新等几百种创新点改进

🔥《2026年YOLO26改进专栏》🔥 🚀持续更新500+最前沿创新改进点(顶会顶刊论文/独家创新策略),涵盖主干网络、各种卷积、注意力机制、检测头等模块,助力科研论文发表与模型性能提升,支持检测/分割/分类任务。订阅即获完整可运行项目,提供专业QQ答疑群,适合科研发论文(SCI/CCF/核心)及工业应用(PCB/医学/遥感检测)。专栏价格将逐步上涨,早订更优惠! ⭐特色:非计算机专业友好、模块可自由组合、全网独家创新;📌适用:研究生大论文和小论文创新、小目标检测、多领域科研应用,满足不同研究需求。

Ai缝合怪、助力小伙伴高效发论文 5118

使用Python将Excel中的数据导入到MySQL

使用python将Excel中的数据导入到Mysql中 1.使用sqlalchemy模块,直降将整个Excel表格导入到Mysql中,代码如下: from sqlalchemy import create_engine #将Excel表格中的数据放到MySQL中 path = r'G:\数据集\记录信息(10月).xls' data=pd.read_excel(path) #这里是对data.c...

wyp8268526的博客 5714

基于 Simulink 的**单相全桥 LLC 谐振双向 DC-DC 变换器(带软开关特性)**实战教程

原边(Primary):全桥逆变电路(4个 MOSFET/IGBT),将直流斩波为高频方波。变压器:提供电气隔离和电压变比。副边(Secondary):全波或全桥整流电路(同步整流或二极管)。

xiaoheshang_123的博客 54

Excel导入mysql

1.导入数据 方法一:使用navicate将Excel数据导入mysql。 1.在mysql中新建一张表,结构和Excel内容对应。 2.将Excel表存为CSV格式,用notepad++打开,编码转化为utf-8。 3.打开navicate,在表上右键导入向导,选择文本文件(不要选CSV),分隔符选逗号,当然也可以自己设定。 方法二:使用python3逐行插入 1.在mysql...

qq_38391187的博客 1万+

告别 DEFINE VIEW:CDS View Entity 迁移全景实战(报表迁移 + ADT 向导 + 避坑清单)

CDS迁移的关键要点与策略 CDS DDIC-based View已被标记为废弃,迁移到CDS View Entity成为必要。迁移面临的主要挑战包括激活成本、命名约束和依赖风险。ABAP 7.57及以上版本必须优先处理,否则将积累技术债务。 迁移方式主要有两种: 报表路线:适合渐进式迁移的On-Premise项目 ADT向导:适合云环境批量迁移 关键注意事项: 必须提前检查SQL View依赖关系 金额/数量字段需要显式引用单位/货币字段 建议按使用场景分批迁移 最佳实践是结合报表进行系统盘点,再通过AD

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 208

把 ST03 的历史数据留得更久:ABAP Workload 统计保留期设置、原理与落地避坑指南

SAP ST03性能数据保留期配置指南 ST03/ST03N是SAP系统性能分析的核心工具,但默认数据保留期通常较短(3个月左右),难以满足跨季度对比、年度规划等需求。本文详细解析了ST03数据保留期的配置方法及注意事项: 数据存储机制:性能数据存储在监控库中,通过定期重组作业清理过期数据 配置路径:7.0+系统在"Workload Collector Database→Reorganization→Control"中按Profile分别设置 关键限制:保留期最大值建议不超过99,否则可

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 218

Python实现Excel数据导入MySQL

一、背景 本章主要分享的是将Excel存放的数据导入到MySQL存放。 二、准备工作 1.安装Python3 下载地址:https://www.python.org/downloads/windows/ 2.安装库 pip installPyMySQL==1.0.2 pip installxlrd==1.2.0 三、代码 Excel数据导入MySQL.py # _*_ coding:utf-8 _*_ import pymysql, xlrd, os clas...

测试领域技术分享 2356

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python实现excel数据导入mysql

excel数据导入mysql excel数据格式: import pandas as pd import xlrd import xlwt import pymysql df=pd.read_excel('1.xlsx') #总行数 len(df) nums = df.shape[0] #数据清洗nan默认为0 df.fillna(0, inplace= True) #删除第一行无用数据 ds...

kinghuahua 1877

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

python excel数据导入到Mysql数据库中

python 操作数据库 import pymysql from openpyxl.reader.excel import load_workbook def importExcelToMysql(cur, path): num = 1 # 读取excel文件 workbook = load_workbook(path) # 获得所有工作表的名字 shee...

王飞的博客 5864

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Excel数据快速导入mysql的几个办法

有时候需要批量插入一批数据到数据库,有很多种办法,这里我用到过三种办法: 1、通过Excel直接生成insert语句 =CONCATENATE("insert into aisee_pingfen_fengcai(id,order_n,department,subject_n,teacher_name) values('",A1,"','",B1,&

程序的尽头是数学,一日不推导赶不上买买提 5万+

Python:高效实现Excel 存入MySQL中去

一些基础的操作吧。

u011954255的博客 2179
上一篇: 软技能代码之外的生存指南【读后整理】
下一篇: mybatis的插入与批量插入的返回ID的原理
陈晨_软件五千言
陈晨_软件五千言 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄20年 91粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值