是否可以在Pandas.ReadSQL中使用'chunksize ='选项来限制/限制内存/ RAM的使用?

时间:2019-08-26 07:48:00

标签: python pandas cx-oracle in-memory

我正在尝试使用cx_Oracle软件包将Oracle数据库中的2亿行数据加载到pandas数据框中:

import cx_Oracle


conct = cx_Oracle.connect(self.dbuser, self.dbpassword, cx_Oracle.makedsn(self.host, self.port, self.sid))

query= """
      SELECT  *
      FROM IDS
      """

df = pd.read_sql(query, con=conct)

return df

我有一个担忧:

1)RAM开销:在监视RAM使用情况时,我注意到python在构建数据帧时保留了整个2亿行所需的所有内存。我试图通过利用chunksize选项来限制/限制RAM的使用,尽管未成功。这是我正在尝试的:


# Create empty list
dfl = []  

# Create empty dataframe
dfs = pd.DataFrame()  

# Start Chunking
for chunk in pd.read_sql(query, con=conct, ,chunksize=10000000):

    # Start Appending Data Chunks from SQL Result set into List
    dfl.append(chunk)

# Start appending data from list to dataframe
dfs = pd.concat(dfl, ignore_index=True)

但是从技术上讲,对于RAM,每次块提取后我都将释放,我是否将其重新分配到累积存储块的列表中?

是否有一种方法可以使用pd.rad_sql方法真正限制/限制大型数据传输的RAM使用/保持,或者有其他方法可以实现此目的?

0 个答案:

没有答案