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实现的一个找零钱的小程序代码分享
Aug 25 Python
使用python实现knn算法
Dec 20 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
实例讲解Python3中abs()函数
Feb 19 Python
解决Mac下使用python的坑
Aug 13 Python
python中hasattr()、getattr()、setattr()函数的使用
Aug 16 Python
python对Excel按条件进行内容补充(推荐)
Nov 24 Python
python redis 批量设置过期key过程解析
Nov 26 Python
完美解决python针对hdfs上传和下载的问题
Jun 05 Python
解决Windows下python和pip命令无法使用的问题
Aug 31 Python
python简单利用字典破解zip文件口令
Sep 07 Python
如何利用python发送邮件
Sep 26 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 CURL模拟GET及POST函数代码
2010/04/25 PHP
关于PHP实现异步操作的研究
2013/02/03 PHP
PHP实现图片旋转效果实例代码
2014/10/01 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
Jquery实现视频播放页面的关灯开灯效果
2013/05/27 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
javascript 注释代码的几种方法总结
2017/01/04 Javascript
package.json文件配置详解
2017/06/15 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
原生js实现日历效果
2020/03/02 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
Python中index()和seek()的用法(详解)
2017/04/27 Python
Django 导出 Excel 代码的实例详解
2017/08/11 Python
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
Python基础教程之if判断,while循环,循环嵌套
2019/04/25 Python
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
有原因的手表:Flex Watches
2019/03/23 全球购物
override和overload的区别
2016/03/09 面试题
家长给老师的道歉信
2014/01/13 职场文书
毕业自我鉴定书
2014/03/24 职场文书
农民工工资支付承诺函
2014/03/31 职场文书
学校安全防火方案
2014/06/07 职场文书
历史学专业求职信
2014/06/19 职场文书
2014优秀大学生简历自我评价
2014/09/15 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
法人身份证明书
2014/10/08 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
JavaScript实现简单图片切换
2021/04/29 Javascript
浅谈Java父子类加载顺序
2021/08/04 Java/Android
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers