其实,我的业务流程是, 先读取excel/csv -> pandas 数据清洗 -> 导入Mysql, 一般是做一个表append 或者是 if exist -> replace的操作

逐行来添加数据其实更加灵活和方便.

这里用的驱动是pymysql的一个包, 其实本质就是一个客户端, 服务端已经和mysql进行匹配了, 只是使用client罢了.

还是直接上代码吧, 还是蛮简单的.

 #!/usr/bin/env python
# coding: utf-8
# author: chenjieyouge@gmail.com '''
应用场景:
将excel等存储的数据 逐条 导入到 Mysql, 即 拼接sql 语句insert into. 特点:
1. 更适用于有主键约束的的表, 如花名册管理, 直接将新花名册逐条插入, 如有门店重复,则 替换 掉,保持最新.
2. to_sql 则更适用用于无主键约束, 大批量导入数据的场景. 原理:
连接: 用Python提供的pymysql驱动,直接拼接SQL去执行
数据: 将每条数据进行"insert into 或 replace into 表名 values (), (), (), ()...每个()放一条数据.
过程:
1. 创建连接对象 con 名字取通俗易懂哈
2. 创建游标对象cursor (通俗理解为连接对象的一个小弟, 用来执行sql, 获取数据..)
3. 执行sql语句cursor.execute() 或 executemany()....
4. 提交命令(事务) con.commit()
5. 查询或提取数据 cursor.fetchall()
6. 关闭con, cursor ''' import pandas as pd
import pymysql # 配置
主机 = "192.168.6.81"
用户 = "xxx"
密码 = 123456
库名 = "new_house" # 连接 # 1. 创建连接对象, 游标对象
con = pymysql.connect(主机, 用户, 密码, 库名)
cursor = con.cursor() def 连接测试(cursor):
try:
# 3. 连接测试: 执行sql, 提交, 查询
cursor.execute("show tables;")
# 4. 提交
con.commit()
# 5. 获取数据
print(cursor.fetchall())
# 6. 关闭连接
cursor.close(); con.close()
print("连接测试成功!")
except Exception as e:
print("连接测试失败!", e) def 处理数据(path, sheet=None):
""""后续可以写更复杂的数据处理逻辑"""
table = pd.read_excel(path, sheet)
# 将缺失值用 None 填充
data = table.where(pd.notnull(table), None)
return table def 导入数据(cursor, table, to_table, method="replace"): len_cols = table.columns.size # 字段的个数 # 拼接sql语句: => insert into 表名 (字段1, 字段2 ...字段n) values (a,b,c), (d,e,f)....
if method not in ("insert", "replace"):
print("input error!") insert_sql = "%s into %s values (%s)" % (method,to_table, "%s,"*(len_cols-1) + "%s") # 变量每行数据, 组成生成器对象 ( (),(),(),(),(),()... ), 每个元组表示一条记录
args = (tuple(row) for _, row in table.iterrows())
try:
_ = cursor.executemany(insert_sql, args)
con.commit()
print("successfully!")
except Exception as e:
print("fail",e)
finally:
cursor.close()
con.close() if __name__ == '__main__': 连接测试() # table = 处理数据("C:\\Users\\beike\\Desktop\\8月带看明细8.15.xls")
#
# 导入数据(cursor, table, "数据库有的表", "replace")

Excel 逐条导入Mysql(数据更新)的更多相关文章

  1. 将Excel数据导入mysql数据库的几种方法

    将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面 ...

  2. Excel连接到MySQL,将Excel数据导入MySql,MySQL for Excel,,

    Excel连接到MySQL 即使当今时代我们拥有了类似微软水晶报表之类的强大报表工具和其他一些灵活的客户管 理应用工具,众多企业在分析诸如销售统计和收入信息的时候,微软的Excel依然是最常用的工具. ...

  3. navcat excel数据导入mysql的方法

    navcat excel数据导入mysql的方法 先navcat导出 xls格式 然后把数据复制到往这个xls里 (按照这个xls格式) 然后导入mysql就行了 如果导入的过程无法识别excel里的 ...

  4. 将Excel数据导入MySql

    1.将选中的数据快儿拷贝到一个TXT文本文件中(记得把后面的空格消掉..),假如存到“D:\data.txt”这个位置里. 2.根据要导入的数据快儿建立MySql数据库和表,然后进入命令提示符里使用命 ...

  5. 如何将EXCEL表导入MYSQL

            在平时的工作学习中,难免会遇到需要把EXCEL表中的数据导入到MYSQL中,比如要把EXCEL中的数据进行核对,或者要把测试用例导入到TestLink中.本人搜集相关的资料并加以实践总 ...

  6. python3实现多excel一键导入mysql

    转载:qq_37955852 一.实现场景. import excel files to mysql author:zxb 工作每个work经常会导入一到几十张不等的excel表,表少可以用navic ...

  7. tp3.2.3运用phpexcel将excel文件导入mysql数据库

    1,下载PHPExcel 2,配置将下载好的PHPExcel文件与PHPExcel.php 放到thinkphp 根目录 include/Library/Org/Util/下面 3,同时将PHPExc ...

  8. excel文件导入mysql

    在数据处理的过程中,常常要把windows下的excel文件导入linux下的mysql.这其中会出现一些问题. 1.首先,要在mysql中建表.命令最好存在记事本中,可以随时修改,随时执行 crea ...

  9. 【MySQL笔记】Excel数据导入Mysql数据库的实现方法——Navicat

    很多公司尤其有点年头的公司,财务业务部门的各种表单都是excel来做的表格,随着互联网的发展各种业务流程都电子化流程化了,再在茫茫多的文档中去查找某一个年份月份的报告是件相当枯燥的事,所以都在想办法将 ...

随机推荐

  1. sublime3插件BracketHighlighter的配置

    BracketHighlighter插件能为Sublime Text提供括号,引号这类高亮功能,但安装此插件后,默认没有高亮,只有下划线表示,不是很醒目,需要配置:1.在Sublime Text中用p ...

  2. maker使用说明书

    1.以自带的示例数据为例 dpp_contig.fasta dpp_est.fasta dpp_protein.fasta te_proteins.fasta 2.生成控制文件 控制文件是特定于运行的 ...

  3. Webdriver get(url)加载时间太长

    运行Selenium脚本时,发现有时候由于网络或性能问题,加载网页时间太长,无法继续执行后续操作,但是实际上元素都已经加载出来了. 解决 # 设置页面加载超时时间 d.set_page_load_ti ...

  4. .Net Core 基于 SnmpSharpNet 开发

    SNMP简介(百度百科): SNMP 是专门设计用于在 IP 网络管理网络节点(服务器.工作站.路由器.交换机及HUBS等)的一种标准协议,它是一种应用层协议. SNMP 使网络管理员能够管理网络效能 ...

  5. [转帖]为什么HikariCP被号称为性能最好的Java数据库连接池,如何配置使用

    为什么HikariCP被号称为性能最好的Java数据库连接池,如何配置使用 原创Clement-Xu 发布于2015-07-17 15:53:14 阅读数 57066  收藏 展开 HiKariCP是 ...

  6. mysql中,手动提交事务

    1: 在mysql中,手动提交事务的案例:CREATE PROCEDURE tfer_funds       (from_account int, to_account int, tfer_amoun ...

  7. Java 并发-Unsafe 相关整理

    https://www.jianshu.com/p/2e5b92d0962e 1. Unsafe 类 Java 不能直接访问操作系统底层,而是通过本地方法来访问.Unsafe 类提供了硬件级别的原子操 ...

  8. Flink 源码解析 —— Flink TaskManager 有什么作用?

    TaskManager 有什么作用 https://t.zsxq.com/RZbu7yN 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- ...

  9. C语言向txt文件写入当前系统时间(Log)

    程序实现很简单,涉及到的只有两个知识点. 1.文件最最基本的打开关闭: 2.系统时间的获取. 代码是在VS2019环境下编写的,部分函数在其他编译器中会无法识别.这个就只能需要自己去查找对应的函数简单 ...

  10. windows 批处理命令

    关机: shutdown -s -t 1 ::-t后面添加时间,表示多少秒之后关机, 删除文件夹以及子文件: rd file2 /s/q  ::/s 删除子文件 /q不需要确认 新建文件夹: md f ...