python pandas内存溢出:

99封情书 提交于 2019-12-05 00:14:28

 

 

pandas中read_xxx的块读取功能

pandas设计时应该是早就考虑到了这些可能存在的问题,所以在read功能中设计了块读取的功能,也就是不会一次性把所有的数据都放到内存中来,而是分块读到内存中,最后再将块合并到一起,形成一个完整的DataFrame。

def read_sql_table(table_name, con, schema=None, index_col=None,
                   coerce_float=True, parse_dates=None, columns=None,
                   chunksize=None):

 

 1.chunksize是在一个每一个chunk块中有多少行。

 2.当chunksize是非None的时候read_xxx返回的是一个迭代器

 

比如我自己的写的一个全量同步数据的代码如下:

gtr=pd.read_sql_table(sync_table, data_from_engine_dict[database],chunksize=20000)
count=0
for df in gtr:
    if count==0:
        df.to_sql(database+"_"+sync_table, data_to_engine, if_exists="replace", index=False)
    else:

        df.to_sql(database + "_" + sync_table, data_to_engine, if_exists="append", index=False)

    count+=1

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!