解决python读取几千万行的大表内存问题

 更新时间:2018年06月26日 08:54:49   作者:Lucky-zhou  
今天小编就为大家分享一篇解决python读取几千万行的大表内存问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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取数作为临时极大值(极小值)的方法

    今天小编就为大家分享一篇python取数作为临时极大值(极小值)的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • 详解查看Python解释器路径的两种方式

    详解查看Python解释器路径的两种方式

    这篇文章主要介绍了详解查看Python解释器路径的两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 关于keras中卷积层Conv2D的学习记录

    关于keras中卷积层Conv2D的学习记录

    这篇文章主要介绍了关于keras中卷积层Conv2D的学习记录,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)

    用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)

    这篇文章主要介绍了用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python顺序执行多个py文件的方法

    python顺序执行多个py文件的方法

    今天小编大家分享一篇python顺序执行多个py文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • 用python实现面向对像的ASP程序实例

    用python实现面向对像的ASP程序实例

    这篇文章主要介绍了用python实现面向对像的ASP程序,实例讲述了使用Python实现ASP程序的方法,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-11-11
  • Python Django 通用视图和错误视图的使用代码

    Python Django 通用视图和错误视图的使用代码

    这篇文章主要介绍了Python Django 通用视图和错误视图的使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • python如何用正则表达式提取字符串

    python如何用正则表达式提取字符串

    这篇文章主要介绍了python如何用正则表达式提取字符串问题,具有很好的参考价值,希望对大家有所帮助。
    2023-03-03
  • tensorflow实现KNN识别MNIST

    tensorflow实现KNN识别MNIST

    这篇文章主要为大家详细介绍了tensorflow实现KNN识别MNIST,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Python利用openpyxl库遍历Sheet的实例

    Python利用openpyxl库遍历Sheet的实例

    今天小编就为大家带来一篇Python利用openpyxl库遍历Sheet的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05

最新评论