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来做的表格,随着互联网的发展各种业务流程都电子化流程化了,再在茫茫多的文档中去查找某一个年份月份的报告是件相当枯燥的事,所以都在想办法将 ...
随机推荐
- 这里有一个url=https://www/.baidu.com/s?id=111&name=yourname,写一个函数获取query的参数和值存放在一个对象
console.log(getJson(url)); function getJson(url){ var obj={}; var arr=url.split("?")[1].sp ...
- 搜索法 | 1103 dfs搜索:符合条件的多项式
其实这题我已经写过两遍了,但都是在看过算法笔记的情况下写的.方法不难,只要能想出来. 找到一个项数为k,每项为p次幂,和为n,并且在有多个结果的情况下要求数字之和最大的一个多项式.如果数字之和相等.还 ...
- 回溯法 | 图的m着色问题
学习链接:算法 图的M着色问题 虽然今早9点才醒来,10点才来教室,但是coding得很高效.吃个早餐,拉个粑粑的时间,就把算法书上的[图的m着色]问题看明白了,大脑里也形成了解决问题的框架. 其实这 ...
- 绘制matplotlib 饼状图
参考:https://blog.csdn.net/ScarlettYellow/article/details/80458797 (2)2016年就业人员在三次产业中分布的饼状图. def swap( ...
- 构建一个给爬虫使用的代理IP池
做网络爬虫时,一般对代理IP的需求量比较大.因为在爬取网站信息的过程中,很多网站做了反爬虫策略,可能会对每个IP做频次控制.这样我们在爬取网站时就需要很多代理IP. 代理IP的获取,可以从以下几个途径 ...
- Java 并发系列之五:java 锁
1. Lock接口 2. 队列同步器AQS 3. 重入锁 ReentrantLock 4. 读写锁 ReentrantReadWriteLock 5. LockSupport工具 6. Conditi ...
- java web开发入门二(struts)基于eclispe
JavaBean JavaBean, 咖啡豆. JavaBean是一种开发规范,可以说是一种技术. JavaBean就是一个普通的java类.只有符合以下规定才能称之为javabean: 1)必须提 ...
- builder模式实例
package heapStark.blogCode.designPattern.builder; public class BaseBean { private int age; private S ...
- 冰多多团队Gamma阶段项目展示
[冰多多]Gamma项目展示 冰多多项目: 语音coding助手 Gamma阶段目标: 推出一个更加完整的IDE,完善编辑器功能,优化UI 一. 团队成员的简介和个人博客地址 成员 角色 个人博客地址 ...
- 【2019年05月16日】A股最便宜的股票
查看更多A股最便宜的股票:androidinvest.com/CNValueTop/ 经典价值三因子选股: 市盈率PE.市净率PB 和 股息分红率,按照 1:1:1的权重,选择前10大最便宜的股票. ...