解决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上基于Markov链生成伪随机文本的教程
Apr 17 Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
Apr 05 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
Oct 31 Python
快速排序的四种python实现(推荐)
Apr 03 Python
django-crontab 定时执行任务方法的实现
Sep 06 Python
vscode 配置 python3开发环境的方法
Sep 19 Python
Python3.7 读取 mp3 音频文件生成波形图效果
Nov 05 Python
python使用配置文件过程详解
Dec 28 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
Mar 06 Python
Django 项目布局方法(值得推荐)
Mar 22 Python
python属于解释语言吗
Jun 11 Python
教你用python实现一个无界面的小型图书管理系统
May 21 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实现利用MySQL保存session的方法
2014/08/23 PHP
PHP 匿名函数与注意事项详细介绍
2016/11/26 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
2017/10/25 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
一个javascript参数的小问题
2008/03/02 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
document.write的几点使用心得
2014/05/14 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
2015/09/04 Javascript
javascript中BOM基础知识总结
2017/02/14 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
详解webpack require.ensure与require AMD的区别
2017/12/13 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
jQuery实现的解析本地 XML 文档操作示例
2020/04/30 jQuery
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
python中PyQuery库用法分享
2021/01/15 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
英国在线泳装店:Simply Swim
2019/05/05 全球购物
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
心理学专业大学生职业生涯规划范文
2014/02/19 职场文书
技术总监管理岗位职责
2014/03/09 职场文书
买房协议书
2014/04/11 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
停电放假通知
2015/04/14 职场文书
2015年教师教学工作总结
2015/04/28 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
学会掌握自己命运的十条黄金法则:
2019/08/08 职场文书