解决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 相关文章推荐
剖析Django中模版标签的解析与参数传递
Jul 21 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
详解Python中 sys.argv[]的用法简明解释
Dec 20 Python
解决Spyder中图片显示太小的问题
Apr 27 Python
python获取文件真实链接的方法,针对于302返回码
May 14 Python
用python实现k近邻算法的示例代码
Sep 06 Python
django+echart绘制曲线图的方法示例
Nov 26 Python
python实现对象列表根据某个属性排序的方法详解
Jun 11 Python
Pandas之排序函数sort_values()的实现
Jul 09 Python
在脚本中单独使用django的ORM模型详解
Apr 01 Python
Python基于callable函数检测对象是否可被调用
Oct 16 Python
python可视化之颜色映射详解
Sep 15 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 数组教程 定义数组
2009/10/23 PHP
解析php php_openssl.dll的作用
2013/07/01 PHP
php输入数据统一类实例
2015/02/23 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
JavaScript运行时库属性一览表
2014/03/14 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
如何理解jQuery中的ajaxSubmit方法
2017/03/13 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
在Vue中使用echarts的方法
2018/02/05 Javascript
JavaScript正则表达式函数总结(常用)
2018/02/22 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
2018/09/27 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
Python greenlet实现原理和使用示例
2014/09/24 Python
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
python关闭windows进程的方法
2015/04/18 Python
Python脚本实现12306火车票查询系统
2016/09/30 Python
python中解析json格式文件的方法示例
2017/05/03 Python
基于python socketserver框架全面解析
2017/09/21 Python
Python程序运行原理图文解析
2018/02/10 Python
Python3 执行系统命令并获取实时回显功能
2019/07/09 Python
python使用tomorrow实现多线程的例子
2019/07/20 Python
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
请写出char *p与"零值"比较的if语句
2014/09/24 面试题
秘书专业自荐信范文
2013/12/26 职场文书
追悼会上的答谢词
2014/01/10 职场文书
关于是否需要写商业计划书
2014/02/07 职场文书
个人政治思想总结
2015/03/05 职场文书
调任通知
2015/04/21 职场文书
民事辩护词范文
2015/05/21 职场文书
植树节新闻稿
2015/07/17 职场文书
毕业晚宴祝酒词
2015/08/11 职场文书
MySQL常用慢查询分析工具详解
2022/08/14 MySQL