解决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操作SQLite简明教程
Jul 10 Python
Python3操作SQL Server数据库(实例讲解)
Oct 21 Python
Python实现的圆形绘制(画圆)示例
Jan 31 Python
Python实现自动上京东抢手机
Feb 06 Python
python爬虫爬取淘宝商品信息
Feb 23 Python
python web自制框架之接受url传递过来的参数实例
Dec 17 Python
python selenium登录豆瓣网过程解析
Aug 10 Python
python基于property()函数定义属性
Jan 22 Python
Django中从mysql数据库中获取数据传到echarts方式
Apr 07 Python
Matplotlib.pyplot 三维绘图的实现示例
Jul 28 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
Nov 02 Python
python模板入门教程之flask Jinja
Apr 11 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
php5新改动之短标记启用方法
2008/09/11 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
2017/03/14 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
2017/05/15 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
JQuery AJAX实现目录浏览与编辑的代码
2008/10/21 Javascript
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
JS时间选择器 兼容IE6,7,8,9
2012/06/26 Javascript
js 控制图片大小核心讲解
2013/10/09 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
JS继承用法实例分析
2015/02/05 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
JS代码实现电脑配置检测功能
2018/03/21 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
2020/03/07 Javascript
理解python中生成器用法
2017/12/20 Python
Python解决八皇后问题示例
2018/04/22 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
django将数组传递给前台模板的方法
2019/08/06 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
2020/06/17 Python
Python如何对齐字符串
2020/07/30 Python
元旦晚会上单位领导演讲稿
2014/01/05 职场文书
办公设备采购方案
2014/03/16 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
公证处委托书
2015/01/28 职场文书
九年级数学教学反思
2016/02/17 职场文书