欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決python讀取幾千萬行的大表內(nèi)存問題

 更新時(shí)間:2018年06月26日 08:54:49   作者:Lucky-zhou  
今天小編就為大家分享一篇解決python讀取幾千萬行的大表內(nèi)存問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

Python導(dǎo)數(shù)據(jù)的時(shí)候,需要在一個(gè)大表上讀取很大的結(jié)果集。

如果用傳統(tǒng)的方法,Python的內(nèi)存會爆掉,傳統(tǒng)的讀取方式默認(rèn)在內(nèi)存里緩存下所有行然后再處理,內(nèi)存容易溢出

解決的方法:

1)使用SSCursor(流式游標(biāo)),避免客戶端占用大量內(nèi)存。(這個(gè)cursor實(shí)際上沒有緩存下來任何數(shù)據(jù),它不會讀取所有所有到內(nèi)存中,它的做法是從儲存塊中讀取記錄,并且一條一條返回給你。)

2)使用迭代器而不用fetchall,即省內(nèi)存又能很快拿到數(shù)據(jù)。

import MySQLdb.cursors

conn = MySQLdb.connect(host='ip地址', user='用戶名', passwd='密碼', db='數(shù)據(jù)庫名', 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、因?yàn)镾SCursor是沒有緩存的游標(biāo),結(jié)果集只要沒取完,這個(gè)conn是不能再處理別的sql,包括另外生成一個(gè)cursor也不行的。

如果需要干別的,請另外再生成一個(gè)連接對象。

2、 每次讀取后處理數(shù)據(jù)要快,不能超過60s,否則mysql將會斷開這次連接,也可以修改 SET NET_WRITE_TIMEOUT = xx 來增加超時(shí)間隔。

以上這篇解決python讀取幾千萬行的大表內(nèi)存問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python循環(huán)控制之break和continue流程控制語句

    python循環(huán)控制之break和continue流程控制語句

    這篇文章主要介紹了python循環(huán)控制之break流程控制語句,Python中提供了兩個(gè)關(guān)鍵字用來控制循環(huán)語句,分別是break和continue,本文都有介紹,需要的朋友可以參考一下
    2022-03-03
  • 在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程

    在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程

    這篇文章主要介紹了在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程,Debian系統(tǒng)和Nginx服務(wù)器皆是高性能的選擇,需要的朋友可以參考下
    2015-04-04
  • Python實(shí)現(xiàn)調(diào)用另一個(gè)路徑下py文件中的函數(shù)方法總結(jié)

    Python實(shí)現(xiàn)調(diào)用另一個(gè)路徑下py文件中的函數(shù)方法總結(jié)

    這篇文章主要介紹了Python實(shí)現(xiàn)調(diào)用另一個(gè)路徑下py文件中的函數(shù)方法,結(jié)合實(shí)例形式總結(jié)分析了Python針對不同文件夾中py文件調(diào)用操作的處理技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-06-06
  • Python?Flask實(shí)現(xiàn)快速構(gòu)建Web應(yīng)用的方法詳解

    Python?Flask實(shí)現(xiàn)快速構(gòu)建Web應(yīng)用的方法詳解

    Flask是一個(gè)輕量級的Web服務(wù)器網(wǎng)關(guān)接口(WSGI)web應(yīng)用框架,本文將和大家一起詳細(xì)探討一下Python?Flask?Web服務(wù),需要的小伙伴可以學(xué)習(xí)一下
    2023-06-06
  • 基于python生成器封裝的協(xié)程類

    基于python生成器封裝的協(xié)程類

    這篇文章主要為大家詳細(xì)介紹了基于python生成器封裝的協(xié)程類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Python3中的循環(huán)語句示例詳解

    Python3中的循環(huán)語句示例詳解

    這篇文章主要介紹了Python3?循環(huán)語句,本文將詳細(xì)介紹Python3中的循環(huán)語句,給出各種循環(huán)的使用示例,以及運(yùn)行結(jié)果的解釋,需要的朋友可以參考下
    2023-04-04
  • Python必備shelve與dbm本地持久化存儲數(shù)據(jù)的兩個(gè)強(qiáng)大工具

    Python必備shelve與dbm本地持久化存儲數(shù)據(jù)的兩個(gè)強(qiáng)大工具

    當(dāng)涉及存儲大量數(shù)據(jù)并且需要高效訪問時(shí),shelve和dbm模塊是Python中用于本地持久化存儲數(shù)據(jù)的兩個(gè)強(qiáng)大工具,它們允許開發(fā)人員以鍵值對的形式存儲數(shù)據(jù),并支持快速的檢索和更新操作,在本文將深入探討這兩個(gè)模塊,展示它們的優(yōu)勢和應(yīng)用場景
    2024-01-01
  • 基于Python的OpenCV骨架化圖像并顯示(skeletonize)

    基于Python的OpenCV骨架化圖像并顯示(skeletonize)

    這篇文章主要介紹了基于Python的OpenCV骨架化圖像并顯示(skeletonize),文中附含詳細(xì)的示例代碼,教大家來實(shí)現(xiàn)完成,有需要的可以參考下
    2021-08-08
  • Python for循環(huán)中的陷阱詳解

    Python for循環(huán)中的陷阱詳解

    這篇文章主要給大家介紹了關(guān)于Python for循環(huán)中陷阱的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • Django中模型Model添加JSON類型字段的方法

    Django中模型Model添加JSON類型字段的方法

    這篇文章主要介紹了Django中模型Model添加JSON類型字段的方法,實(shí)例分析了Python的Django框架模型使用技巧,需要的朋友可以參考下
    2015-06-06

最新評論