python mysql大数据量下载方式优化

背景

在利用python连接mysql库下载数据时,用传统的fetch方式,在数据量达到百万级后,往往要等待很长很长时间,才能把数据全部加载完。现在,本文将介绍一种更为快速高效的方式来下载数据。

传统方式

用python的pymysql包来获取数据库连接,并读取数据。
见代码示例:

conn = getMysqlConn()  # 获取mysql连接的方法
cursor = conn.cursor()
stmt = """select * from TABLE_NAME """ 
cursor.execute(stmt)
for f in cursor.fetchall():
  # 加载数据
  pass

优化方式

用mysql的指令将下载到本地,再去加载文件。
指令如下:

mysql -h10.xx.232.xxx -uroot -p123456 -P3306 -A database_name --default-character-set=utf8 -ss -e  "select * from table_name " > /data/xxx/download.csv

(mysql的ip, port, 数据库名信息按实际情况填写)

效率对比

60个字段的表结构,下载时间对比:

数据量 原始下载方式 mysql指令下载
40w 137秒 9秒
560w 2645秒 224秒

(注:上述时间包含了下载数据+加载到内存)

结论

直接使用mysql指令下载数据,全方位的领先于直接使用python的fetch方式,在数据量较大时,可以考虑使用这种方式来进行数据读取。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。