解决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遍历文件夹并删除特定格式文件的示例
Mar 05 Python
Python实现登录人人网并抓取新鲜事的方法
May 11 Python
谈谈Python进行验证码识别的一些想法
Jan 25 Python
Python抓取框架 Scrapy的架构
Aug 12 Python
python opencv之分水岭算法示例
Feb 24 Python
python自动化生成IOS的图标
Nov 13 Python
Flask框架web开发之零基础入门
Dec 10 Python
python如何解析配置文件并应用到项目中
Jun 27 Python
Python assert语句的简单使用示例
Jul 28 Python
Python解析json时提示“string indices must be integers”问题解决方法
Jul 31 Python
Python3分析处理声音数据的例子
Aug 27 Python
Python爬虫基础之简单说一下scrapy的框架结构
Jun 26 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 socket方式提交的post详解
2008/07/19 PHP
在php和MySql中计算时间差的方法
2011/04/22 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
PHP实现JS中escape与unescape的方法
2016/07/11 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
js点击文本框后才加载验证码实例代码
2015/10/20 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
vue中created和mounted的区别浅析
2019/08/13 Javascript
layui type2 通过url给iframe子页面传值的例子
2019/09/06 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
2020/07/15 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
2021/01/20 Javascript
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
import的本质解析
2017/10/30 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
详解Python安装tesserocr遇到的各种问题及解决办法
2019/03/07 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
解决python对齐错误的方法
2020/07/16 Python
python中的测试框架
2020/11/13 Python
音乐表演专业毕业生求职信
2013/10/14 职场文书
经济贸易系求职信
2014/08/04 职场文书
2014年财政局工作总结
2014/12/09 职场文书
千手观音观后感
2015/06/03 职场文书
新入职员工工作总结
2015/10/15 职场文书
运动会班级口号霸气押韵
2015/12/24 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书
2017元旦、春节期间廉洁自律承诺书
2016/03/25 职场文书
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python
HTML常用标签超详细整理
2022/03/19 HTML / CSS