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读取几千万行的大表内存问题相关推荐

  1. python读取千万级数据库数据类型_Python 基于Python从mysql表读取千万数据实践

    场景: 有以下两个表,两者都有一个表字段,名为waybill_no,我们需要从tl_waybill_bar_record表读取1000w条唯一的waybill_no,然后作为INSERT SQL语句的 ...

  2. python 读取数据库内存爆_解决python读取几千万行的大表内存问题

    Python导数据的时候,需要在一个大表上读取很大的结果集. 如果用传统的方法,Python的内存会爆掉,传统的读取方式默认在内存里缓存下所有行然后再处理,内存容易溢出 解决的方法: 1)使用SSCu ...

  3. python excel写入日期变数字_解决python 读取excel时 日期变成数字并加.0的问题

    excel 文件内容如下: 读取excel内容: import xlrd from datetime import datetime from xlrd import xldate_as_dateti ...

  4. python画图y轴在右侧_解决python中画图时x,y轴名称出现中文乱码的问题

    如下所示: #-*- coding:utf-8 -*- import numpy as np import matplotlib.pyplot as plt from matplotlib.font_ ...

  5. python自然对数为底的指数函数_解决python中的幂函数、指数函数问题

    最近在调代码,碰到幂函数.指数函数,总是提示 ValueError: math domain error ValueError: negative number cannot be raised to ...

  6. python转换成exe后一闪而过_解决python xx.py文件点击完之后一闪而过的问题

    解决python xx.py文件点击完之后一闪而过的问题 1.问题复现: 有时候我们去点击.py文件 文件里明明有打印信息,却一闪而过,没有任何显示 比如以下内容 #!/usr/local/bin/p ...

  7. 千万级数据库使用索引查询速度更慢的疑惑-数据回表问题

    环境 数据库:TiDB数据库(和mysql数据库极其相似的数据库) 表名:index_basedata 表数据:13 000 000条数据 表索引:包含一个普通索引,索引列 "year&qu ...

  8. python读写csv与数据库性能_使用python将csv文件写入SQL Server数据库

    请考虑动态构建查询以确保占位符数与表和CSV文件格式匹配.那么只需确保您的表格和CSV文件是正确的,而不是检查您输入的内容是否正确?代码中的占位符. 以下示例假定 > CSV文件包含第一行中的列 ...

  9. 如何实现mysql千万级数据库插入速度和读取速度

    mysql千万级数据库插入速度和读取速度的调整记录 2018.11.1 Mysql version 5.7.23 一般情况下mysql上百万数据读取和插入更新是没什么问题了,但到了上千万级就会出现很慢 ...

最新文章

  1. 利用python实现Windows8定时自动关机和休眠
  2. Ubuntu 18.04 关闭蓝牙开机启动
  3. Android 内存管理 amp;Memory Leak amp; OOM 分析
  4. mysql改存储引擎教程_MySQL中修改数据表存储引擎的三种方法
  5. zookeeper的安装及配置教程(步骤详尽)
  6. 面试官问:如果MySQL引起CPU消耗过大,你会怎么优化
  7. Flume-ng 高可用搭建-与测试
  8. weakhashmap_Java WeakHashMap size()方法与示例
  9. 怎么查看电脑有没有python_使用python获取电脑的磁盘信息方法
  10. 传奇gm命令怎么用_传奇GM常用命令
  11. 如何提高大数据分析的效果
  12. 计算机网络每日一题,【计算机考研】每日一题-数网操-35
  13. PHP仿给你花分期小额贷款平台源码
  14. 国美易卡运用人工智能实现线上线下消费场景
  15. 【教程】如何使用ArcGIS绘制荧光图
  16. 一位老学长的真实互联网校招求职心路历程~
  17. EOS智能合约开发系列(14): 关于require_auth函数
  18. php时区设置为prc还是错误,关于php时区时间错误问题的解决,以及Unix时间戳转换工具...
  19. 小明加密通道进入_德州人行通道闸哪个牌子好
  20. 《Java 2 实用教程》读书笔记(二)

热门文章

  1. iOS模拟各种网络状态测试
  2. shell脚本批量处理ping IP测试
  3. 2019年终总结,一朝看尽长安花
  4. 飞塔防火墙添加删除用户配置
  5. 天池大数据众智平台 - 数据科学家社区
  6. 封装的APP封装源码-可以封装安卓和IOS
  7. PHP微信根据订单号查询支付结果,9. PHP接入微信支付订单、退款订单、转款订单的查询...
  8. 绘王两款便携数位屏同时发售,全贴合防眩光屏配硬笔
  9. 表征学习 Representation Learning(特征学习、表示学习)是什么?
  10. 判断当前页面是否在微信内置浏览器中打开