解决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 pickle模块用法实例
Apr 14 Python
Python中type的构造函数参数含义说明
Jun 21 Python
Python的Django框架中消息通知的计数器实现教程
Jun 13 Python
解决python3中解压zip文件是文件名乱码的问题
Mar 22 Python
python3实现163邮箱SMTP发送邮件
May 22 Python
Python3单行定义多个变量或赋值方法
Jul 12 Python
Python操作word常见方法示例【win32com与docx模块】
Jul 17 Python
浅析Python语言自带的数据结构有哪些
Aug 27 Python
简单了解python协程的相关知识
Aug 31 Python
详解python的变量缓存机制
Jan 24 Python
pycharm配置python 设置pip安装源为豆瓣源
Feb 05 Python
python APScheduler执行定时任务介绍
Apr 19 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重新实现PHP脚本引擎内置函数
2007/03/06 PHP
如何让CI框架支持service层
2014/10/29 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
php使用pecl方式安装扩展操作示例
2019/08/12 PHP
JQquery的一些使用心得分享
2012/08/01 Javascript
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
2016/08/16 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
2019/05/12 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
[05:53]完美世界携手游戏风云打造 卡尔工作室观战系统篇
2013/04/22 DOTA
[01:32:22]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第一场 2月5日
2021/03/11 DOTA
Python简单过滤字母和数字的方法小结
2019/01/09 Python
Python随机数函数代码实例解析
2020/02/09 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
python 使用raw socket进行TCP SYN扫描实例
2020/05/05 Python
英国最大的高品质珠宝和手表专家:Goldsmiths
2017/03/11 全球购物
Gweniss格温妮丝女包官网:英国纯手工制造潮流包包品牌
2018/02/07 全球购物
美国50岁以上单身人士约会平台:SilverSingles
2018/06/29 全球购物
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
linux面试题参考答案(10)
2016/10/26 面试题
EJB的几种类型
2012/08/15 面试题
2014年五四青年节活动策划书
2014/04/22 职场文书
项目投资合作意向书
2014/07/29 职场文书
收款委托书范本
2014/09/11 职场文书
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
初中政治教学工作总结
2015/08/13 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书
Oracle表空间与权限的深入讲解
2021/11/17 Oracle
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js
Python测试框架pytest高阶用法全面详解
2022/06/01 Python