Excel 逐条导入Mysql(数据更新)
其实,我的业务流程是, 先读取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(数据更新)的更多相关文章
- 将Excel数据导入mysql数据库的几种方法
将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面 ...
- Excel连接到MySQL,将Excel数据导入MySql,MySQL for Excel,,
Excel连接到MySQL 即使当今时代我们拥有了类似微软水晶报表之类的强大报表工具和其他一些灵活的客户管 理应用工具,众多企业在分析诸如销售统计和收入信息的时候,微软的Excel依然是最常用的工具. ...
- navcat excel数据导入mysql的方法
navcat excel数据导入mysql的方法 先navcat导出 xls格式 然后把数据复制到往这个xls里 (按照这个xls格式) 然后导入mysql就行了 如果导入的过程无法识别excel里的 ...
- 将Excel数据导入MySql
1.将选中的数据快儿拷贝到一个TXT文本文件中(记得把后面的空格消掉..),假如存到“D:\data.txt”这个位置里. 2.根据要导入的数据快儿建立MySql数据库和表,然后进入命令提示符里使用命 ...
- 如何将EXCEL表导入MYSQL
在平时的工作学习中,难免会遇到需要把EXCEL表中的数据导入到MYSQL中,比如要把EXCEL中的数据进行核对,或者要把测试用例导入到TestLink中.本人搜集相关的资料并加以实践总 ...
- python3实现多excel一键导入mysql
转载:qq_37955852 一.实现场景. import excel files to mysql author:zxb 工作每个work经常会导入一到几十张不等的excel表,表少可以用navic ...
- tp3.2.3运用phpexcel将excel文件导入mysql数据库
1,下载PHPExcel 2,配置将下载好的PHPExcel文件与PHPExcel.php 放到thinkphp 根目录 include/Library/Org/Util/下面 3,同时将PHPExc ...
- excel文件导入mysql
在数据处理的过程中,常常要把windows下的excel文件导入linux下的mysql.这其中会出现一些问题. 1.首先,要在mysql中建表.命令最好存在记事本中,可以随时修改,随时执行 crea ...
- 【MySQL笔记】Excel数据导入Mysql数据库的实现方法——Navicat
很多公司尤其有点年头的公司,财务业务部门的各种表单都是excel来做的表格,随着互联网的发展各种业务流程都电子化流程化了,再在茫茫多的文档中去查找某一个年份月份的报告是件相当枯燥的事,所以都在想办法将 ...
随机推荐
- Django 1.11 shell中模块导入问题
django报错:django.core.exceptions.ImproperlyConfigured: 处理办法 import os os.environ['DJANGO_SETTINGS_MOD ...
- 安装-consul服务发现集群
centos 7.4.x consul 1.2.2 list: 172.16.16.103 172.16.16.112 172.16.16.115 下载: #cd /usr/local/ #wget ...
- Python(三)对装饰器的理解
装饰器是 Python 的一个重要部分,也是比较难理解和使用好的部分.下面对装饰器做一下简单整理 1. 前言 装饰器实际上是应用了设计模式里,装饰器模式的思想: 在不概念原有结构的情况下,添加新的功能 ...
- Error Code: 1175. You are using safe update
使用MySQL执行update的时候报错:Error Code: 1175. You are using safe update mode and you tried to update a tabl ...
- BitSet源码
public class BitSet1 implements Cloneable, java.io.Serializable { // >>>左边补0, << 右边补0 ...
- 源码编译安装使用glusterfs+heketi安装使用
注:使用源码安装的原因主要是使用yum安装glusterfs服务端时出现一些依赖库问题 准备3台glusterfs服务器(官方也建议至少3台,防止发生脑裂),并在各个服务器的/etc/hosts下面添 ...
- Java安装 --- jdk 和eclipse tomcat
本文主要使用win7进行安装 安装jdk jdk: 这里面有四个版本78910,会持续增加 链接:https://pan.baidu.com/s/1LTauKbBJKQVOvlbHx2dTwQ提取 ...
- Go语言系列教程(十二)之函数完结篇
Hello,各位小伙伴大家好,我是小栈君.上一期我们讲到了关于函数的有参.无参.匿名函数,本期我们分享一下关于go语言函数类型.匿名函数和闭包的概念和实战.闲话不多说,立马开始分享. 在Go语言中,函 ...
- Win10应用商城删除后部分应用出错的解决方案
出错图示 解决方案 查找完整包名:Get-AppxPackage -allusers | Select Name, PackageFullName Add-appxpackage -register ...
- J2EE 练习题 - JSON HTTP Service
J2EE 练习题 - JSON HTTP Service 1 要求 2 示例代码 2.1 Server 端 2.2 客户端 - Java 1 要求 在 Tomcat 上布署一个 HTTP Servic ...