1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

Python如何读取千万级数据并自动写入MySQL数据库

介绍

大家好,我是本际云服务器推荐网的小编小本本。今天我想和大家分享一些关于Python如何读取和写入MySQL数据库的方法。这些对于那些需要处理大量数据并将其自动导入系统中的人来说将是非常有用的。具体涉及到的数据库包括mongodb和es等相关内容,下面就给大家详细解答。

Python如何读取千万级数据并自动写入MySQL数据库

场景一:数据不需要频繁写入MySQL

如果你只需要偶尔将一些数据导入到MySQL中,那么可以使用navicat工具的导入向导功能。它支持多种文件格式,可以根据文件中的字段自动建表,也可以在已有表中插入数据,非常快捷方便。

场景二:数据是增量的,需要频繁写入MySQL

如果你需要自动化并频繁地将数据写入MySQL数据库,可以通过以下两种方法:

方式一:Python + pymysql库

安装pymysql库的命令是:pip install pymysql

以下是代码实现:

import pymysql

#数据库连接信息
conn=pymysql.connect(
    host='127.0.0.1',
    user='root',
    passwd='yourpassword',
    db='yourdb',
    port=3306,
    charset="utf8")
#分块处理
big_size=100000
#分块遍历写入到mysql
with pd.read_csv('./yourdata.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="""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:yourpassword@localhost:3306/yourdb')
data=pd.read_csv('./yourdata.csv')
data.to_sql('yourtable',engine,chunksize=100000,index=None)
print('存入成功!')

总结

将数据存入MySQL数据库的三种方法包括:直接存,利用navicat的导入向导功能,使用Python + pymysql库,以及使用Pandas + sqlalchemy。在这些方法之中,Pandas是最为简单快捷的,它仅需五行代码就能实现这个需求,而且只用了约4分钟时间。因此,我强烈建议您选择第二种方法,既方便又高效。如果您仍然觉得速度慢,可以考虑加入多进程和多线程。

以上就是本篇文章的全部内容,希望可以对大家有所帮助!

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6814.html