python excel修改数据库_【超详细】用Python行云流水地操作Excel和数据库

2023-10-30

前言

本想就着这个机会学习下Java读取Excel的,奈何搜了一圈,发现还是Pandas最为简单明了。打算先就Python写一版,后面在学习时可能还会发一篇《用Java优雅地操作Excel和数据库》。

准备工作

软件包

关于软件安装和环境配置,网上有成堆的教程,此处不再赘述。

大体上需要用到的软件就以下几款:

Anaconda(建议用Anaconda里的jupyter notebook,如果喜欢PyCharm也可以,当然也可以只用Python)

Python(Anaconda和PyCharm都内置,如果只有Python也可)

MySQL(不多说了,免费)

数据

数据只要随便找一个Excel文件,自己建一个Excel文档(不论是.xls还是.xlsx后缀都可以),并随便写一些内容,保存为 成绩单.xlsx。

d8dd3744144086475bca72cabd1cad8e.png

Pandas读取Excel文件

import pandas as pd # 如果没有安装pandas报错,直接在jupyter里面运行后述语句 !pip install pandas

df = pd.read_excel(r"C:\Users\Administrator\Desktop\成绩单.xlsx") # 读取test.xlsx的sheet1,并以第一行作为Dataframe的标题头

df.head() # 查看表格内容概况

2a5bba0a7899953ad80c08e2b8cc7c89.png

创建数据库

打开MySQL,创建数据库students

# 创建数据库

create database students;

# 使用数据库

use database;

# 查看数据表,这个时候是空数据库

show tables;

创建数据表

create table `students` (`id` int not null auto_increment primary key, `student_id` varchar(255) comment '学号', `name` varchar(255) comment '姓名', `results` int comment '成绩');

注:创建数据表有两种方式,一种是在MySQL中先创建好数据表,并定义好数据字段的名称、属性,然后再用Pandas进行导入,若属性不符则导入失败;另一种是直接用Pandas在导出的同时创建数据表,这样导出的数据表字段属性都为TEXT,然后根据需要更改数据字段属性。

将记录导入数据库

调用Pandas.io.sql.to_sql()方法,其中if_exists控制重复记录是替换还是追加。

from sqlalchemy import create_engine

# 建立连接,username替换为用户名,passwd替换为密码,students替换为数据库名

conn = create_engine('mysql+pymysql://username:passwd@localhost:3306/students',encoding='utf8')

# 以df中的header为标题,写入数据库,test替换为数据表名

pd.io.sql.to_sql(df, "students", conn, if_exists='append', index=False)

一般这时候会报错,因为Pandas里面的字段名称和数据库里的字段名称不一致

886e77982a67696d80e1b827b41bb8e7.png

修改df里面的标题(几种重命名的方式汇总 https://blog.csdn.net/littleRpl/article/details/100117428)

df.rename(columns={'学号':'student_id',

'姓名':'name',

'成绩':'results'},inplace=True)

12c28ceaa15da4547c400ccd89231f91.png

再次尝试写入,成功。我们直接查询student数据表

ae220ab1d76727034e95ac771d073801.png

使用PyMySQL连接数据库进行增删改查

连接数据库

import pymysql

db = pymysql.connect(host="127.0.0.1", user="root", database="students", passwd="root") # 主机名,用户名,数据库名称,密码

查询操作

cursor = db.cursor()

# 编写查询语句

sql = "SELECT * FROM test;"

# 执行查询语句

cursor.execute(sql)

# 获取查询结果

result = cursor.fetchall()

可以看到返回的是一个二维元组

63db6b4fd759ca03362d670c31d29b4a.png

增删改操作

新增记录

insert_sql = "INSERT INTO students (student_id, name, results) values ('Y031', 'Jack', 99);"

cursor.execute(insert_sql)

db.commit()

4b96fe8f1426dcf95474a64996176ea1.png

更新记录

update_sql = "update students set student_id='Y006' where student_id='Y031';"

cursor.execute(update_sql)

db.commit()

a6c8851480c87061cb0fef2bf771d84d.png

删除记录(不建议,一般使用逻辑删除,即新增一个is_delete字段,然后update这个字段)

同样的也是套用上面的模板进行操作,读者可以自行尝试。

这里稍微讲一下逻辑删除的原理,由于我进行了一次物理删除,导致自增id跳过6到了7.

如果是逻辑删除,先修改表结构新增is_delete字段

51d7f35fd1b4b2856e089d7d897fc2fb.png

更新指定主键的记录的is_delete属性为1,查询的时候加上限定条件。

6f10b446d25f9e6151686400e2455134.png

结语

通过Python操作数据库和Excel文件,以Pandas为桥梁,就可以快速进行Excel数据分析,Pandas数据处理,MySQL数据库存储,实现全流程自动化操作。通过数据库连接Web开发组件,Pandas连接机器学习,Excel导出统计报表,实现一站式编程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python excel修改数据库_【超详细】用Python行云流水地操作Excel和数据库 的相关文章

  • python运行配置不正确_如何使用Python3.5并行执行多个web请求(不适用aiohttp

    阅读时间 8 分钟 gt 作者的生产环境刚从2 6升级到3 5 0 但满足不了aiohttp的最低版本需求 所以在有了这篇文章 如何改造代码 充分利用python3 5 asyncio提供的异步功能 原文链接 近日IT部门最终将我们工作环境
  • No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.

    在写基于vue element 的图片上传中 点击上传图片 会发现有些图片可以上传 有些上传不了 还会报这个错 这个错误翻译过来就是 请求的资源上不存在 Access Control Allow Origin 标头 但是还是不知道怎么做 百
  • CocosCreator在Android和iOS双平台的双向调用

    由于感觉Cocos官方的文档写得有点不尽人意 所以在这里总结一下自己的经验 一 下面先写好CocosCreator调用原生端 iOS和Android CocosCreator代码 我们新建一个javascript文件 命名为 CallNat
  • Kettle Spoon入门教程

    Kettle是一款国外开源的ETL工具 纯java编写 可以在Window Linux Unix上运行 数据抽取高效稳定 其中 Spoon是Kettle中的一个组件 其他组件有PAN CHEF Encr和KITCHEN等 Spoon通过图形
  • DropDownList绑定到数据库中的方法

    这几天遇到再DropDownList中 如何将数据库中的内容与DropDownList下拉框中的值关联起来 步骤如下 1 建立要关联的数据库 在本例中假设为dept 要定义一个数据表用来取得这个表中的内容 代码如下 public DataT
  • web服务器:SOAP,WSDL,UDDI

    一 web服务简介 Web Services是一个可以将应用程序变为Web应用程序 将自己本地的应用程序信息通过网络 发布到网络中 让别人通过浏览器访问本地信息 Web Services的技术主要建立在XML的规范之上 保证了这一体系结构的
  • Pycharm缓存文件占满C盘

    地址 C Users 12135 AppData Local JetBrains
  • R包学习——reshape包中melt、cast、merge函数用法

    目录 1 melt Melt an object into a form suitable for easy casting 2 cast Cast a molten data frame into the reshaped or aggr
  • 三极管

    截止区 放大区 饱和区 放大电路 三极管工作在 放大区 一般不用三极管做放大电路 原因是三极管的可变电阻特性不容易调 运算放大器 开关电路 发射集 一般不加 下拉电阻 a 三极管工作在 截止区 Vout 0v 或 饱和区 Vout Vcc
  • 【node】 8、http搭建服务器模块(创建自己的第二个网站)

    创建自己的第一个网站 11 html h2 我的网站首页 h2 a href wdjl 我的简历 a h3 我的作品 h3 h3 我的学习 h3 h3 我的家乡 h3 h3 我的就业 h3 img src img alt 22 html a
  • 查看linux系统的磁盘大小、内存大小和CPU内核数的命令

    查看磁盘 df Th 查看内存 单位是GB free g 以总和的形式查询内存的使用信息 free t 单位是MB free m 或者用下面的命令 查看linux系统内存的大小 显示单位是MB dmidecode t memory grep
  • 给你 2 万条数据,怎么快速导入到 MySQL?写得太好了...

    一 前言 前两天做了一个导入的功能 导入开始的时候非常慢 导入2w条数据要1分多钟 后来一点一点的优化 从直接把list怼进Mysql中 到分配把list导入Mysql中 到多线程把list导入Mysql中 时间是一点一点的变少了 非常的爽
  • Java实现xlsx文件下载和文件上传

    Java实现xlsx文件下载和文件上传 文件下载 xlsx下载案例 直接上代码 注 header的文件头编码要设置好否则可能会出现乱码 public void downloadTemplate HttpServletRequest requ
  • Git如何上传代码到远程仓库(Gitee&Github)

    1 前提是下载好了git并且配置好了环境 首先在gitee上面建立一个新的远程仓库 2 建立好仓库后 在本地新建一个文件夹 3 打开文件夹后 鼠标单击右键选择Git Bash Here 打开git后将新建的远程仓库clone到该文件夹下 c
  • 处理kdevtmpfsi挖矿病毒

    发现CPU直接100 php root hadoop002 tmp systemctl status 25177 session 5772 scope Session 5772 of user root Loaded loaded run
  • stm32 IAP + APP ==>双剑合一

    扩展 IAP主要用于产品出厂后应用程序的更新作用 上一篇博文详细的对IAP 升级程序做了详细的分析http blog csdn net yx l128125 article details 12992773 考虑到出厂时要先烧写IAP 再烧
  • vue 动态引入第三方js和css

    页面中经常会用到第三方库的情况 直接全局引入到html文件会造成资源浪费 实现在需要的页面动态加载 动态加载css文件 param url param isCache export function loadCSS url isCache
  • 2021山东省职业院校技能大赛“网络空间安全”赛题及赛题解析(超详细)

    2021年中职组 网络空间安全 赛项 2021年中职组山东省竞赛任务书 模块 A 基础设施设置与安全加固 200分 模块B 网络安全事件响应 数字取证调查和应用安全 400分 模块C CTF夺旗 攻击 200分 模块D CTF夺旗 防御 2
  • QT 图片透明度

    设置图片的透明度 方式一是底部参考文章的内容 方式二是因为取值范围为0 0 1 0 所以在方式一的基础上稍加修改 方式三是 QPainter 自己的透明度设置函数 加载图片 QPixmap m pixmap QPixmap m pixmap

随机推荐

  • CSS学习案例(16):网易云音乐导航栏

    网易云音乐官网点这里 原版 自己做的 网易云logo图标和搜索放大镜图标 在阿里巴巴矢量图标库找 div class container div class top div class content div class logo a hr
  • 如何发送和接收RTP封包的H264,用FFmpeg解码

    这篇文章给大家介绍怎么打包H264分片到RTP包 并且实现一个播放程序演示接收RTP包和用FFmpeg解码 为了让大家更了解H264打包成RTP的细节 有必要罗嗦一下向大家介绍一些相关的基础知识 下面分三节介绍 其中前面两节是基础知识 第三
  • android setWebChromeClient和setWebViewClient的使用区别

    开发中我发现两个控件的使用 由于我做的开发依旧是前期开发 所以功能比较简单 在这里我使用的webView空间一般是使用的如下这个方法 webView setWebViewClient new webViewClient 然后新建一个内部类实
  • c++ 编码转化

    UTF 8到GB2312的转换 char U2G const char utf8 int len MultiByteToWideChar CP UTF8 0 utf8 1 NULL 0 wchar t wstr new wchar t le
  • 软件测试入门第一步【测试用例】

    测试用例 是指对一项特定的软件产品进行测试任务的描述 体现测试方案 方法 技术和策略 内容包括测试目标 测试环境 输入数据 测试步骤 预期结果 测试脚本等 并形成文档 每个具体测试用例都将包括下列详细信息 编制人 审定人 编制日期 版本 用
  • git-自动化脚本

    首先我们要从https github com github 上申请一个GitHub仓库 过程就不介绍了 现在我们来写个git的自动回滚脚本 通过版本号来回滚代码 cat usr local src git sh bin bash autho
  • Kafka日志告警关键字

    在配置Kafka日志告警时 可以关注以下关键字 ERROR 表示发生了错误 需要进一步检查错误消息以确定具体的问题 Exception 表示发生了异常情况 需要进一步检查异常信息以确定具体的问题 Failed 表示操作失败 如消息发送失败
  • Set的常见用法详解(STL)新手入门!!!

    目录 1 2 Set的常见用法详解 1 set的定义 2 set容器内元素的访问 3 set的常见用途 1 2 Set的常见用法详解 前言 set翻译为集合 是内部自动有序且不含重复元素的容器 当需要去除重复元素且可能因为这些元素比价大或者
  • mysql alter语句用法:增加字段、修改字段、删除字段等

    文章目录 1修改表名 修改字段数据类型 修改字段名 增加字段 删除字段 1修改表名 alter table 旧表名 rename 新表名 修改字段数据类型 alter table 表名 modify 属性名 数据类型 要修改的部分 修改为你
  • 每天下午5点使用计算机结束时断开终端的连,在每天下午5点使用计算机结束时断开终端的连接属于()...

    相关题目与解析 在每天下午5点使用计算机结束时断开终端的连接 这种方式属于保护 A 外部终端的物理安全B 通 在每天下午5点使用计算机结束时断开终端的连接属于 对于外部计算机终端的安全管理 以下正确的是 允许在一台主机上同时连接多个终端 各
  • 华为手机计算机删除怎么恢复出厂设置,华为手机恢复出厂设置能彻底清除垃圾吗? 恢复出厂怎么操作...

    1 华为手机恢复出厂设置能不能彻底清除垃圾是根据机主的备份而定的 2 安卓手机恢复出厂设置只能清除手机本机内存中的垃圾 并且会把所有手机上的数据 应用 信息 资料等都会清除的 而在外置内存卡上反而会增加不少不能使用的垃圾文件 3 华为手机恢
  • 揭秘数据探查:引领企业数据治理质量提升,助力业务高速发展!

    在日常工作中 产品 运营 研发及数据分析师常常会发现 处理 加工和识别数据等数据处理工作往往会占用整个工作流程80 的时间 造成这种困境的原因 大致有三点 1 数据量大且混乱 数据质量参差不齐 2 整体概括信息缺乏 度量信息如最大值 最小值
  • 优雅的关闭socket

    http blog sina com cn s blog 4dbcd2730100v5cu html 转载于以上网址 我们在利用IOCP 完成端口 进行程序设计的时候 经常要关闭一些不满足条件的套接字 假如我们直接采用closesocket
  • Vuforia——环境配置

    开发环境 Unity 2021 1 14flc1 Vuforia Engine AR 9 8 8 开发前要注意先配好Git 否则Vuforia插件无法导入 配置Vuforia 2021版本没有内置Vuforia 我也尝试去Asset Sto
  • 原生JS实现评论功能

    利用js的追加 appendChild实现评论
  • Android studio项目目录结构

    Android studio项目目录结构 一 gradle目录 二 idea目录 三 moudle App 目录 1 build目录 2 libs目录 3 src目录 1 AndroidTest 2 Java 3 res A 资源介绍 图片
  • Qt信号槽传递自定义结构体

    1 定义结构体并注册元对象 1 定义结构体 struct Student int m id int m age QString m name 2 注册元对象 Q DECLARE METATYPE Student class MainWind
  • git命令行提交文件

    命令行提交文件 git init 初始化创建 git文件 git add 添加所有需要提交的文件 git commit m 初始化 提交添加的文件到本地 git remote add origin git地址 与远程github建立链接 g
  • Java给定一个正整数n,求1+2+3+...+n之和并输出。

    package com haitong homeworktwo import java util Scanner public class One public static void main String args System out
  • python excel修改数据库_【超详细】用Python行云流水地操作Excel和数据库

    前言 本想就着这个机会学习下Java读取Excel的 奈何搜了一圈 发现还是Pandas最为简单明了 打算先就Python写一版 后面在学习时可能还会发一篇 用Java优雅地操作Excel和数据库 准备工作 软件包 关于软件安装和环境配置