[Python] Python读取百万级数据自动写入Mysql数据库

美图欣赏2022/06/20

数据练习集

user_data.csv练习数据集https://download.csdn.net/download/Hudas/85712209?spm=1001.2014.3001.5503导入数据集

import pandas as pd
# 读取数据
data = pd.read_csv(r'C:\Users\HP\Desktop\user_data.csv')
# 1048575行记录,6列字段
data.shape # (1048575, 6)

1.利用Pandas sqlalchemy

import pandas as pd
from sqlalchemy import create_engine
# 创建数据库对象
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
# 读取数据
data = pd.read_csv(r'C:\Users\HP\Desktop\user_data.csv')
# 将数据存入到Mysql数据库中的user01数据表中
data.to_sql('user01',engine,chunksize=100000,index=None)
print('存入成功!')

结果展示

2.利用Python pymysql

PyMySQL是在Python3.x版本中用于连接Mysql服务器的一个库

注意:引入import pymysql之前需要进行安装

基本操作流程

创建数据表user02

DROP TABLE IF EXISTS `user02`;
CREATE TABLE `user02`  (
  `user_id` bigint(20) DEFAULT NULL,
  `item_id` bigint(20) DEFAULT NULL,
  `behavior_type` bigint(20) DEFAULT NULL,
  `user_geohash` text CHARACTER SET utf8 COLLATE utf8_general_ci,
  `item_category` bigint(20) DEFAULT NULL,
  `time` text CHARACTER SET utf8 COLLATE utf8_general_ci
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

import pandas as pd
import pymysql
# 设置数据库连接信息:ip地址、用户名、密码、数据库名、端口号、字符集
conn = pymysql.connect(
       host='127.0.0.1',
       user='root',
       passwd='123456',
       db='test', 
       port = 3306,
       charset="utf8")
# 分块处理
# 因为数据量庞大,所以设置每次只处理100000条数据
big_size = 100000
    
with pd.read_csv(r'C:\Users\HP\Desktop\user_data.csv',chunksize=big_size) as reader:
    for df in reader:
        datas = []
        print('处理:',len(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插入语句
        sql = """insert into user02(user_id,item_id,behavior_type,item_category,time) values(%s)""" % _values
        # 使用cursor()方法创建一个游标对象cursor
        cursor = conn.cursor()
        # 执行sql语句
        cursor.executemany(sql,datas)
        # 提交到数据库执行 
        conn.commit()
# 关闭数据库连接   
conn.close()
cursor.close()
print('存入成功!')

结果展示

提示Tips:使用connect()方法连接数据库时,额外设置字符集 charset=utf-8,可以防止插入中文时出错


扩展阅读资料

利用Python操作Mysql数据库https://blog.csdn.net/Hudas/article/details/124255734

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用Python中的MySQL Connector模块来实现从MySQL数据库读取数据写入数据MySQL数据库。 以下是一个简单的示例代码,说明如何使用Python连接到MySQL数据库读取数据并将其写入另一个MySQL数据库: ```python import mysql.connector # 设置源数据库连接参数 src_db_config = { 'host': 'localhost', 'user': 'root', 'password': 'password', 'database': 'source_db' } # 设置目标数据库连接参数 dest_db_config = { 'host': 'localhost', 'user': 'root', 'password': 'password', 'database': 'destination_db' } # 连接源数据库 src_db = mysql.connector.connect(**src_db_config) # 连接目标数据库 dest_db = mysql.connector.connect(**dest_db_config) # 获取源数据库游标 src_cursor = src_db.cursor() # 获取目标数据库游标 dest_cursor = dest_db.cursor() # 查询源数据库中的数据 src_cursor.execute("SELECT * FROM source_table") # 读取查询结果 results = src_cursor.fetchall() # 将查询结果写入目标数据库 for result in results: dest_cursor.execute("INSERT INTO destination_table (col1, col2, col3) VALUES (%s, %s, %s)", result) # 提交目标数据库更改 dest_db.commit() # 关闭游标和数据库连接 src_cursor.close() dest_cursor.close() src_db.close() dest_db.close() ``` 在上面的代码中,首先设置源数据库和目标数据库的连接参数,然后使用`mysql.connector.connect`方法连接到两个数据库。接下来,使用源数据库游标执行查询,并使用`fetchall`方法读取查询结果。最后,使用目标数据库游标执行插入语句将结果写入目标数据库,并使用`commit`方法提交更改。最后,关闭游标和数据库连接。 请注意,上面的示例代码仅供参考。在实际使用中,您可能需要根据自己的需求进行调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值