我正在尝试将 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 迭代较小的数据块。参见这篇文章:https://stackoverflow.com/a/31839639/3707607
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)