Postgres 데이터베이스에서 Python으로 테이블을 읽으려고합니다. 테이블에는 약 800 만 개의 행과 17 개의 열이 있으며 DB에는 622MB의 크기가 있습니다.Pandas가 read_sql_table에 너무 많은 메모리를 사용하고 있습니다.
psql을 사용하여 전체 테이블을 csv로 내보내고 pd.read_csv()를 사용하여 읽을 수 있습니다. 완벽하게 작동합니다. 파이썬 프로세스는 약 1GB의 메모리 만 사용하며 모든 것이 좋습니다.
우리가해야 할 일은이 풀이 자동화되어야한다는 것이므로 DB에서 직접 pd.read_sql_table()을 사용하여 테이블을 읽을 수 있다고 생각했습니다. 다음 코드 사용
import sqlalchemy
engine = sqlalchemy.create_engine("postgresql://username:[email protected]:5432/db")
the_frame = pd.read_sql_table(table_name='table_name', con=engine,schema='schemaname')
이 방법은 많은 메모리를 사용하여 시작됩니다. 작업 관리자를 사용하여 메모리 사용량을 추적 할 때 최대 16GB의 메모리를 사용하여 컴퓨터를 정지시킬 때까지 파이썬 프로세스의 메모리 사용량이 올라가고 등반하는 것을 볼 수 있습니다.
왜 이런 일이 벌어지고 있는지에 대한 아이디어는 높이 평가됩니다.
chunkksize 인수가 있는지 확인하고 청크로 데이터 프레임을 읽습니다. –