解决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实现数据库编程方法详解
Jun 09 Python
python subprocess 杀掉全部派生的子进程方法
Jan 16 Python
python内置函数:lambda、map、filter简单介绍
Nov 16 Python
Python实现感知器模型、两层神经网络
Dec 19 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
Dec 21 Python
python使用openpyxl库修改excel表格数据方法
May 03 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
Oct 14 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
Aug 20 Python
Python常用模块os.path之文件及路径操作方法
Dec 03 Python
python编程进阶之类和对象用法实例分析
Feb 21 Python
Python logging自定义字段输出及打印颜色
Nov 30 Python
python turtle绘图
May 04 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安全配置详细说明
2011/09/26 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
Smarty模板类内部原理实例分析
2019/07/03 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
JS 的应用开发初探(mootools)
2009/12/19 Javascript
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
在JavaScript中构建ArrayList示例代码
2014/09/17 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
jQuery实现仿腾讯迷你首页选项卡效果代码
2015/09/17 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
2016/01/27 Javascript
vue.js利用Object.defineProperty实现双向绑定
2017/03/09 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
2017/06/19 Javascript
对angular 实时更新模板视图的方法$apply详解
2018/10/09 Javascript
详解Vue CLI 3.0脚手架如何mock数据
2018/11/23 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
Vue.js中该如何自己维护路由跳转记录
2019/05/19 Javascript
JS中的算法与数据结构之集合(Set)实例详解
2019/08/20 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
详解vue中v-on事件监听指令的基本用法
2020/07/22 Javascript
JS跨浏览器解析XML应用过程详解
2020/10/16 Javascript
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
python dict 相同key 合并value的实例
2019/01/21 Python
Python将字符串常量转化为变量方法总结
2019/03/17 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
Python时间序列缺失值的处理方法(日期缺失填充)
2019/08/11 Python
python3.8下载及安装步骤详解
2020/01/15 Python
Python xlwt模块使用代码实例
2020/06/10 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
家得宝加拿大家装网上商店:The Home Depot加拿大
2016/08/27 全球购物
2015年求职自荐信范文
2015/03/04 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书
Python编解码问题及文本文件处理方法详解
2021/06/20 Python