python - Pandas 使用 read_sql_table 占用过多内存

标签 python postgresql pandas sqlalchemy

我正在尝试将我的 Postgres 数据库中的表格读入 Python。表大约有 800 万行和 17 列,在数据库中的大小为 622MB。

我可以使用 psql 将整个表导出到 csv,然后使用 pd.read_csv() 将其读入。它工作得很好。 Python 进程只使用大约 1GB 的内存,一切都很好。

现在,我们需要完成的任务需要这个拉取自动化,所以我想我可以直接从数据库中使用 pd.read_sql_table() 读取表。使用以下代码

import sqlalchemy
engine = sqlalchemy.create_engine("postgresql://username:password@hostname:5432/db")
the_frame = pd.read_sql_table(table_name='table_name', con=engine,schema='schemaname') 

这种方法开始使用大量内存。当我使用任务管理器跟踪内存使用情况时,我可以看到 Python 进程内存使用情况不断攀升,直到它一路上升到 16GB 并卡住计算机。

任何关于为什么会发生这种情况的想法都将受到赞赏。

最佳答案

您需要设置 chunksize 参数,以便 pandas 迭代较小的数据 block 。看到这个帖子:https://stackoverflow.com/a/31839639/3707607

关于python - Pandas 使用 read_sql_table 占用过多内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41253326/

相关文章:

python - 如何以 "pretty"格式打印二维数组?

postgresql - 使用计算的距离更新同一张表

ruby-on-rails - Rails 加入多态模型

python - hdf5 文件到 pandas 数据框

python - OpenCV Python : Closed Contour Approximation For A Speech Bubble Shape

python - 带有 python 问题的嵌套 JSON

python - 使用 xlsxwriter 为行中包含的内容着色,但不将颜色锁定到该行号?

python - 将值传播到 pandas 数据框中的列(透视)传感器事件

python - 使用 python 雪花连接器从雪花表获取列标题

PostgreSQL 9.1流复制restore_command : special meaning of exit code 255?