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

2024-10-06 12:30:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用cx\ U Oracle包将Oracle数据库中的2亿行数据加载到一个数据帧中,如下所示:

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 over head:在监视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,我不是要将其重新分配到累积保存块的列表中吗?你知道吗

有没有一种方法可以真正限制/限制RAM的使用/保留,以便使用pd.rad\U sql数据库或者有其他的方法来达到这个目的?你知道吗


Tags: 数据self数据库dfreadsqlquerycon