解决python读取几千万行的大表内存问题


Posted in Python onJune 26, 2018

Python导数据的时候,需要在一个大表上读取很大的结果集。

如果用传统的方法,Python的内存会爆掉,传统的读取方式默认在内存里缓存下所有行然后再处理,内存容易溢出

解决的方法:

1)使用SSCursor(流式游标),避免客户端占用大量内存。(这个cursor实际上没有缓存下来任何数据,它不会读取所有所有到内存中,它的做法是从储存块中读取记录,并且一条一条返回给你。)

2)使用迭代器而不用fetchall,即省内存又能很快拿到数据。

import MySQLdb.cursors

conn = MySQLdb.connect(host='ip地址', user='用户名', passwd='密码', db='数据库名', port=3306,
   charset='utf8', cursorclass = MySQLdb.cursors.SSCursor)
cur = conn.cursor()
cur.execute("SELECT * FROM bigtable");
row = cur.fetchone()
while row is not None:
 do something
 row = cur.fetchone()

cur.close()
conn.close()

需要注意的是,

1、因为SSCursor是没有缓存的游标,结果集只要没取完,这个conn是不能再处理别的sql,包括另外生成一个cursor也不行的。

如果需要干别的,请另外再生成一个连接对象。

2、 每次读取后处理数据要快,不能超过60s,否则mysql将会断开这次连接,也可以修改 SET NET_WRITE_TIMEOUT = xx 来增加超时间隔。

以上这篇解决python读取几千万行的大表内存问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用动态变量名的方法
May 06 Python
Python2.x版本中cmp()方法的使用教程
May 14 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
Sep 28 Python
老生常谈python中的重载
Nov 11 Python
Python选择网卡发包及接收数据包
Apr 04 Python
Django 静态文件配置过程详解
Jul 23 Python
解决python明明pip安装成功却找不到包的问题
Aug 28 Python
python数据爬下来保存的位置
Feb 17 Python
django创建超级用户时指定添加其它字段方式
May 14 Python
Django Admin 上传文件到七牛云的示例代码
Jun 20 Python
Python+Opencv身份证号码区域提取及识别实现
Aug 25 Python
python实现发送带附件的邮件代码分享
Sep 22 Python
详解Python3的TFTP文件传输
Jun 26 #Python
python3爬取数据至mysql的方法
Jun 26 #Python
python清除函数占用的内存方法
Jun 25 #Python
Python IDLE清空窗口的实例
Jun 25 #Python
Python设置在shell脚本中自动补全功能的方法
Jun 25 #Python
PyCharm代码整体缩进,反向缩进的方法
Jun 25 #Python
Python代码块批量添加Tab缩进的方法
Jun 25 #Python
You might like
php下实现一个阿拉伯数字转中文数字的函数
2008/07/10 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
php时区转换转换函数
2014/01/07 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
2014/08/18 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
2011/10/12 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
javascript验证邮件地址和MX记录的方法
2015/06/16 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
js 获取今天以及过去日期
2017/04/11 Javascript
vue2.0 根据状态值进行样式的改变展示方法
2018/03/13 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
详解微信小程序胶囊按钮返回|首页自定义导航栏功能
2019/06/14 Javascript
Python入门篇之编程习惯与特点
2014/10/17 Python
python安装与使用redis的方法
2016/04/19 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
python 读取excel文件生成sql文件实例详解
2017/05/12 Python
Python字符串处理实现单词反转
2017/06/14 Python
Python优先队列实现方法示例
2017/09/21 Python
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
纯用NumPy实现神经网络的示例代码
2018/10/24 Python
python 多线程串行和并行的实例
2019/02/22 Python
python实现移位加密和解密
2019/03/22 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
python实现在线翻译
2020/06/18 Python
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
会计主管岗位职责范文
2013/11/08 职场文书
十佳好少年事迹材料
2014/08/21 职场文书
社区务虚会发言材料
2014/10/20 职场文书
辩护意见书
2015/06/04 职场文书
孔繁森观后感
2015/06/10 职场文书
七年级作文之游记
2019/12/11 职场文书
docker 制作mysql镜像并自动安装
2022/05/20 Servers