python读取千万级数据库数据类型_解决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读取千万级数据库数据类型_Python 基于Python从mysql表读取千万数据实践
场景: 有以下两个表,两者都有一个表字段,名为waybill_no,我们需要从tl_waybill_bar_record表读取1000w条唯一的waybill_no,然后作为INSERT SQL语句的 ...
- python 读取数据库内存爆_解决python读取几千万行的大表内存问题
Python导数据的时候,需要在一个大表上读取很大的结果集. 如果用传统的方法,Python的内存会爆掉,传统的读取方式默认在内存里缓存下所有行然后再处理,内存容易溢出 解决的方法: 1)使用SSCu ...
- python excel写入日期变数字_解决python 读取excel时 日期变成数字并加.0的问题
excel 文件内容如下: 读取excel内容: import xlrd from datetime import datetime from xlrd import xldate_as_dateti ...
- python画图y轴在右侧_解决python中画图时x,y轴名称出现中文乱码的问题
如下所示: #-*- coding:utf-8 -*- import numpy as np import matplotlib.pyplot as plt from matplotlib.font_ ...
- python自然对数为底的指数函数_解决python中的幂函数、指数函数问题
最近在调代码,碰到幂函数.指数函数,总是提示 ValueError: math domain error ValueError: negative number cannot be raised to ...
- python转换成exe后一闪而过_解决python xx.py文件点击完之后一闪而过的问题
解决python xx.py文件点击完之后一闪而过的问题 1.问题复现: 有时候我们去点击.py文件 文件里明明有打印信息,却一闪而过,没有任何显示 比如以下内容 #!/usr/local/bin/p ...
- 千万级数据库使用索引查询速度更慢的疑惑-数据回表问题
环境 数据库:TiDB数据库(和mysql数据库极其相似的数据库) 表名:index_basedata 表数据:13 000 000条数据 表索引:包含一个普通索引,索引列 "year&qu ...
- python读写csv与数据库性能_使用python将csv文件写入SQL Server数据库
请考虑动态构建查询以确保占位符数与表和CSV文件格式匹配.那么只需确保您的表格和CSV文件是正确的,而不是检查您输入的内容是否正确?代码中的占位符. 以下示例假定 > CSV文件包含第一行中的列 ...
- 如何实现mysql千万级数据库插入速度和读取速度
mysql千万级数据库插入速度和读取速度的调整记录 2018.11.1 Mysql version 5.7.23 一般情况下mysql上百万数据读取和插入更新是没什么问题了,但到了上千万级就会出现很慢 ...
最新文章
- 利用python实现Windows8定时自动关机和休眠
- Ubuntu 18.04 关闭蓝牙开机启动
- Android 内存管理 amp;Memory Leak amp; OOM 分析
- mysql改存储引擎教程_MySQL中修改数据表存储引擎的三种方法
- zookeeper的安装及配置教程(步骤详尽)
- 面试官问:如果MySQL引起CPU消耗过大,你会怎么优化
- Flume-ng 高可用搭建-与测试
- weakhashmap_Java WeakHashMap size()方法与示例
- 怎么查看电脑有没有python_使用python获取电脑的磁盘信息方法
- 传奇gm命令怎么用_传奇GM常用命令
- 如何提高大数据分析的效果
- 计算机网络每日一题,【计算机考研】每日一题-数网操-35
- PHP仿给你花分期小额贷款平台源码
- 国美易卡运用人工智能实现线上线下消费场景
- 【教程】如何使用ArcGIS绘制荧光图
- 一位老学长的真实互联网校招求职心路历程~
- EOS智能合约开发系列(14): 关于require_auth函数
- php时区设置为prc还是错误,关于php时区时间错误问题的解决,以及Unix时间戳转换工具...
- 小明加密通道进入_德州人行通道闸哪个牌子好
- 《Java 2 实用教程》读书笔记(二)