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函数参数*args**kwargs用法实例
Dec 04 Python
tornado捕获和处理404错误的方法
Feb 26 Python
Python中实现结构相似的函数调用方法
Mar 10 Python
python list排序的两种方法及实例讲解
Mar 20 Python
Python IDLE入门简介
Dec 08 Python
python Flask 装饰器顺序问题解决
Aug 08 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 Python
我喜欢你 抖音表白程序python版
Apr 07 Python
python 采用paramiko 远程执行命令及报错解决
Oct 21 Python
Python classmethod装饰器原理及用法解析
Oct 17 Python
python操作toml文件的示例代码
Nov 27 Python
python中子类与父类的关系基础知识点
Feb 02 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
PHP sprintf()函数用例解析
2011/05/18 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
javascript 数组学习资料收集
2010/04/11 Javascript
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
jQuery蓝色风格滑动导航栏代码分享
2015/08/19 Javascript
原生js实现键盘控制div移动且解决停顿问题
2016/12/05 Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
2017/01/13 Javascript
js实现无缝滚动图
2017/02/22 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
对VUE中的对象添加属性
2018/09/18 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
2018/09/25 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
使用python Fabric动态修改远程机器hosts的方法
2018/10/26 Python
基于Python对数据shape的常见操作详解
2018/12/25 Python
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
python nmap实现端口扫描器教程
2020/05/28 Python
在Python中使用filter去除列表中值为假及空字符串的例子
2019/11/18 Python
Python tcp传输代码实例解析
2020/03/18 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
python 调整图片亮度的示例
2020/12/03 Python
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
日语专业毕业生求职信
2013/12/04 职场文书
讲解员培训方案
2014/05/04 职场文书
2014年端午节演讲稿范文
2014/05/23 职场文书
异地年检委托书范本
2014/09/24 职场文书
民间个人借款协议书
2014/09/30 职场文书
党支部四风整改方案
2014/10/25 职场文书
检讨书范文1000字
2015/01/28 职场文书
社会治安综合治理责任书
2015/01/29 职场文书
个人合作协议范本
2015/08/06 职场文书
新学期感想
2015/08/10 职场文书
校运会班级霸气口号
2015/12/24 职场文书
使用Redis实现分布式锁的方法
2022/06/16 Redis