Python 读取千万级数据自动写入 MySQL 数据库
作者:python2021_ 发布时间:2023-11-08 09:25:47
标签:Python,读取,数据,写入,MySQL
前言
Python 读取数据自动写入 MySQL 数据库,这个需求在工作中是非常普遍的,主要涉及到 python 操作数据库,读写更新等,数据库可能是 mongodb、 es,他们的处理思路都是相似的,只需要将操作数据库的语法更换即可。本篇文章会给大家系统的分享千万级数据如何写入到 mysql,分为两个场景,两种方式。
场景一:数据不需要频繁的写入mysql
使用 navicat 工具的导入向导功能。支持多种文件格式,可以根据文件的字段自动建表,也可以在已有表中插入数据,非常快捷方便。
场景二:数据是增量的,需要自动化并频繁写入mysql
测试数据:csv 格式 ,大约 1200万行
import pandas as pd
data = pd.read_csv('./tianchi_mobile_recommend_train_user.csv')
data.shape
打印结果:
方式一: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('存入成功!')
方式二: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('存入成功!')
直接存,利用 navicat 的导入向导功能
Python pymysql
Pandas sqlalchemy
来源:https://blog.csdn.net/python2021_/article/details/125372686


猜你喜欢
- 写了个 str ="s"++; 然后出现Nan,找了一会。 收集资料如下判断: 1.判断undefined: <s
- 网上有很多关于PHP在IIS下配置的教程,但都是一些很理性化的东西,我从里面整理出来这个教程 发出来为了方便参考,有什么问题也可以大家一起交
- 如何做一个密码“生成器”?randompassword.asp<% Dim i, intNum,&nbs
- 不废话,直接上代码Python3.6签到代码,只需修改url,账号,密码即可,此处是登录时无验证登录,有验证码的自行补充# -*- codi
- IIS上设置301 跳转相信大家都会,只要在网站-属性-主目录里 选择重定向URL就行了,这样整站就跳转到目标站点了,但是有个问
- 我的原数据库是3.23版本的.前几天因为一个论坛转移.必须用5.1的.于是就是升级了数据库.论坛是正常的.可以是原来的一个老库因为是3.23
- 引伸阅读解读absolute与relativeposition:relative/absolute无法冲破的等级定位一直是WEB标准应用中的
- 最近在用fso,读取txt文本文件的内容时碰到了“输入超出了文件尾 ”的运行错误,当txt中的内容为空的时候就出现这个问题了,查了
- Python3中的map()、reduce()、filter() 这3个一般是用于对序列进行操作的内置函数,它们经常需要与 匿名函数 lam
- 网页兼容测试,除了做不同浏览器的兼容测试,还要观察网页在不同分辨率下的表现情况。在页面中使用了CSS绝对定位,发现在宽屏下错位。随后测试非1
- 为什么需要协程协程的本质是将一段数据的运行状态进行打包,可以在线程之间调度,所以协程就是在单线程的环境下实现的应用程序级别的并发,就是把本来
- 各位大家好!很荣幸能在这里和大家聊聊!(*^__^*) 嘻嘻……此处省略488字,切入正题。关于网页设计这个行业,在中国来讲这个行业并不成熟
- cache 是一个带索引带超时的缓存库目的在于优化代码结构,提供了若干实践。 https://github.com/weapons
- 在进行爬虫爬取淘宝商品信息时候,利用selenium来模拟浏览器进行爬取时遇到了这个问题:selenium.common.exception
- 阅读文本前请参考此文章的数据表结构Django提供了两个非常有用的工具:F对象和Q对象,方便了在一些特殊场景下的查询过程。1.F对象查询F对
- 页面缓存e.g.@cache_page(time_out, key_prefix=key_prefix)def my_view(): ...
- 当使用Python的flask框架来开发网站后台,解析前端Post来的数据,通常都会使用request.form来获取前端传过来的数据,但是
- 本文实例讲述了Python PyAutoGUI模块控制鼠标和键盘实现自动化任务。分享给大家供大家参考,具体如下:PyAutoGUI是用Pyt
- 第一种方法:原理比较简单通过判断当前是隐藏还是显示的,并以此来判断。<script language="javascript
- Numpy数组转置很容易,两种写法np_array = np.array([[1, 2], [3, 4]]) np_array.transp