Python 读取千万级数据自动写入 MySQL 数据库


Posted in Python onJune 28, 2022

前言

Python 读取数据自动写入 MySQL 数据库,这个需求在工作中是非常普遍的,主要涉及到 python 操作数据库,读写更新等,数据库可能是 mongodb、 es,他们的处理思路都是相似的,只需要将操作数据库的语法更换即可。本篇文章会给大家系统的分享千万级数据如何写入到 mysql,分为两个场景,两种方式。

场景一:数据不需要频繁的写入mysql

使用 navicat 工具的导入向导功能。支持多种文件格式,可以根据文件的字段自动建表,也可以在已有表中插入数据,非常快捷方便。

Python 读取千万级数据自动写入 MySQL 数据库

Python 读取千万级数据自动写入 MySQL 数据库

场景二:数据是增量的,需要自动化并频繁写入mysql

测试数据:csv 格式 ,大约 1200万行

import pandas as pd
data = pd.read_csv('./tianchi_mobile_recommend_train_user.csv')
data.shape

打印结果:

Python 读取千万级数据自动写入 MySQL 数据库

方式一:python ➕ pymysql 库

安装 pymysql 命令:

pip install pymysql

代码实现:

import pymysql
# 数据库连接信息
conn = pymysql.connect(
       host='127.0.0.1',
       user='root',
       passwd='wangyuqing',
       db='test01',
       port = 3306,
       charset="utf8")
# 分块处理
big_size = 100000
# 分块遍历写入到 mysql
with pd.read_csv('./tianchi_mobile_recommend_train_user.csv',chunksize=big_size) as reader:
    for df in reader:
        datas = []
        print('处理:',len(df))
#         print(df)
        for i ,j in df.iterrows():
            data = (j['user_id'],j['item_id'],j['behavior_type'],
                    j['item_category'],j['time'])
            datas.append(data)
        _values = ",".join(['%s', ] * 5)
        sql = """insert into users(user_id,item_id,behavior_type
        ,item_category,time) values(%s)""" % _values
        cursor = conn.cursor()
        cursor.executemany(sql,datas)
        conn.commit()
 # 关闭服务
conn.close()
cursor.close()
print('存入成功!')

Python 读取千万级数据自动写入 MySQL 数据库

方式二:pandas ➕ sqlalchemy:pandas需要引入sqlalchemy来支持sql,在sqlalchemy的支持下,它可以实现所有常见数据库类型的查询、更新等操作。

代码实现:

from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://root:wangyuqing@localhost:3306/test01')
data = pd.read_csv('./tianchi_mobile_recommend_train_user.csv')
data.to_sql('user02',engine,chunksize=100000,index=None)
print('存入成功!')

总结

pymysql 方法用时12分47秒,耗时还是比较长的,代码量大,而 pandas 仅需五行代码就实现了这个需求,只用了4分钟左右。最后补充下,方式一需要提前建表,方式二则不需要。所以推荐大家使用第二种方式,既方便又效率高。如果还觉得速度慢的小伙伴,可以考虑加入多进程、多线程。

最全的三种将数据存入到 MySQL 数据库方法:

  • 直接存,利用 navicat 的导入向导功能
  • Python pymysql
  • Pandas sqlalchemy

到此这篇关于Python 读取千万级数据自动写入 MySQL 数据库的文章就介绍到这了,更多相关Python 读取数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

Python 相关文章推荐
对Python进行数据分析_关于Package的安装问题
May 22 Python
python版简单工厂模式
Oct 16 Python
Python实现Pig Latin小游戏实例代码
Feb 02 Python
python3+PyQt5使用数据库表视图
Apr 24 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
May 24 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 26 Python
Python解决走迷宫问题算法示例
Jul 27 Python
python 命令行传入参数实现解析
Aug 30 Python
python os.path.isfile()因参数问题判断错误的解决
Nov 29 Python
将keras的h5模型转换为tensorflow的pb模型操作
May 25 Python
python搜索算法原理及实例讲解
Nov 18 Python
Python中for后接else的语法使用
May 18 Python
python数字图像处理:图像简单滤波
Jun 28 #Python
python实现一个简单的贪吃蛇游戏附代码
python数字图像处理之对比度与亮度调整示例
Jun 28 #Python
python数字图像处理实现图像的形变与缩放
在python中读取和写入CSV文件详情
Jun 28 #Python
python数字图像处理之图像的批量处理
如何利用python实现Simhash算法
Jun 28 #Python
You might like
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
PHP爆绝对路径方法收集整理
2012/09/17 PHP
jquery 模拟类搜索框自动完成搜索提示功能(改进)
2010/05/24 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
2012/03/01 Javascript
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
JavaScript中读取和保存文件实例
2014/05/08 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
Angular如何引入第三方库的方法详解
2017/07/13 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
浅谈React碰到v-if
2018/11/04 Javascript
js实现无刷新监听URL的变化示例代码详解
2020/06/03 Javascript
python的pdb调试命令的命令整理及实例
2017/07/12 Python
Python zip()函数用法实例分析
2018/03/17 Python
Python数学形态学实例分析
2019/09/06 Python
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
介绍一下grep命令的使用
2015/06/12 面试题
餐饮业的创业计划书范文
2013/12/26 职场文书
需求分析说明书
2014/05/09 职场文书
小区门卫岗位职责范本
2014/08/24 职场文书
委托书格式要求
2015/01/28 职场文书
水电施工员岗位职责
2015/04/11 职场文书
早安问候语大全
2015/11/10 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
2016年社会管理综治宣传月活动总结
2016/03/16 职场文书
导游词之重庆钓鱼城
2019/09/19 职场文书
Elasticsearch 索引操作和增删改查
2022/04/19 Python