解决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 30 Python
python中如何使用正则表达式的集合字符示例
Oct 09 Python
Python爬虫小技巧之伪造随机的User-Agent
Sep 13 Python
Python实现的爬取百度贴吧图片功能完整示例
May 10 Python
十分钟搞定pandas(入门教程)
Jun 21 Python
pandas DataFrame 交集并集补集的实现
Jun 24 Python
python画图把时间作为横坐标的方法
Jul 07 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
Sep 26 Python
python3获取文件中url内容并下载代码实例
Dec 27 Python
Python3如何在Windows和Linux上打包
Feb 25 Python
Tensorflow中的dropout的使用方法
Mar 13 Python
python为什么会环境变量设置不成功
Jun 23 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模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
2017/03/13 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
Angular排序实例详解
2017/06/28 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
Vue.js项目模板搭建图文教程
2017/09/20 Javascript
JS基于递归实现网页版计算器的方法分析
2017/12/20 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
微信小程序动态显示项目倒计时
2019/06/20 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
Vue实现点击按钮复制文本内容的例子
2019/11/09 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
[01:21]DOTA2周边文化主题展 神秘商店火热开售
2017/07/30 DOTA
浅谈python字符串方法的简单使用
2016/07/18 Python
Flask框架的学习指南之开发环境搭建
2016/11/20 Python
python 捕获shell脚本的输出结果实例
2017/01/04 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
Python制作动态字符图的实例
2019/01/27 Python
Python OOP类中的几种函数或方法总结
2019/02/22 Python
python面向对象 反射原理解析
2019/08/12 Python
Python django搭建layui提交表单,表格,图标的实例
2019/11/18 Python
使用Pycharm分段执行代码
2020/04/15 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
YSL圣罗兰美妆英国官网:Yves Saint Laurent Beauty UK
2019/08/03 全球购物
退休教师欢送会主持词
2014/03/31 职场文书
英语课前三分钟演讲稿
2014/08/19 职场文书
四风批评与自我批评范文
2014/10/14 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
Python实战之用tkinter库做一个鼠标模拟点击器
2021/04/27 Python