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基础教程之类class定义使用方法
Feb 20 Python
Python之re操作方法(详解)
Jun 14 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
python实现守护进程、守护线程、守护非守护并行
May 05 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
Jul 26 Python
解决Python3.5+OpenCV3.2读取图像的问题
Dec 05 Python
python字符串查找函数的用法详解
Jul 08 Python
Python终端输出彩色字符方法详解
Feb 11 Python
基于virtualenv创建python虚拟环境过程图解
Mar 30 Python
python 读txt文件,按‘,’分割每行数据操作
Jul 05 Python
Python turtle编写简单的球类小游戏
Mar 31 Python
pandas中pd.groupby()的用法详解
Jun 16 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
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
PHP使用递归生成文章树
2015/04/21 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
Ajax 数据请求的简单分析
2011/04/05 Javascript
js jquery数组介绍
2012/07/15 Javascript
js编写trim()函数及正则表达式的运用
2013/10/24 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
解决js函数闭包内存泄露问题的办法
2016/01/25 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
vue better scroll 无法滚动的解决方法
2018/06/07 Javascript
vue-cli配置环境变量的方法
2018/07/09 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
详解element-ui中表单验证的三种方式
2019/09/18 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
python备份文件的脚本
2008/08/11 Python
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
python+pyqt实现右下角弹出框
2017/10/26 Python
Python实现GUI学生信息管理系统
2020/04/05 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
对Python中的条件判断、循环以及循环的终止方法详解
2019/02/08 Python
详解Python:面向对象编程
2019/04/10 Python
基于python调用psutil模块过程解析
2019/12/20 Python
Python list运算操作代码实例解析
2020/01/20 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
Django model.py表单设置默认值允许为空的操作
2020/05/19 Python
一款利用纯css3实现的win8加载动画的实例分析
2014/12/11 HTML / CSS
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
高三历史教学反思
2014/01/09 职场文书
小学评语大全
2014/04/22 职场文书
化学教育专业自荐信
2014/07/04 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
python基础学习之生成器与文件系统知识总结
2021/05/25 Python