- SQLAlchemy와 psycopg2 중 어느 것을 사용할까?2025년 03월 06일
- 31514
- 작성자
- 2025.03.06.:45
Pandas 데이터프레임을 Postgres 테이블에 적재하는 작업을 하면서 고민했던 내용에 대해 정리한 글이다.
데이터프레임을 Postgres 테이블에 적재하는 방법에는 여러 가지가 있지만, 그 중에서도 SQLAlchemy 라이브러리와 psycopg2 드라이버를 비교하려고 한다.
SQLAlchemy
SQLAlchemy는 ORM이자 DB API 역할을 하는 라이브러리이며, `create_engine()`을 사용하여 데이터베이스 연결을 관리한다.
Connection Pool을 관리하여 재사용 가능한 DB 연결을 제공하고, `pandas.to_sql()`을 사용하여 데이터프레임을 테이블에 쉽게 적재할 수 있다.
하지만 ORM이기 때문에 직접 SQL을 실행하는 psycopg2보다 다소 느릴 수 있다.
psycopg2
psycopg2는 PostgreSQL 전용 파이썬 드라이버로, 직접 데이터베이스와 연결하여 SQL을 실행할 수 있다.
트랜잭션을 제어할 수 있으며, `COPY FROM`과 같은 명령어로 대용량의 데이터를 빠르게 적재할 수 있다.
나는 무엇을 사용해야 할까?
나의 상황은 이미 만들어진 데이터프레임을 테이블에 적재하는 상황이고, 데이터의 양도 많지 않다.
psycopg2에서 `COPY FROM`을 사용하려면 데이터프레임을 CSV 파일로 변환해야 하고, `executemany()`를 사용하려면 리스트로 변환해야 한다.
따라서 이러한 변환 작업을 하지 않고 바로 적재할 수 있는 SQLAlchemy의 `to_sql()`를 사용하는 것이 더 좋다고 판단했다.
# SQLAlchemy용 엔진 생성 (psycopg2를 기반으로) engine = create_engine( f"postgresql+psycopg2://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}", isolation_level="AUTOCOMMIT" ) # 데이터를 PostgreSQL 테이블에 삽입 df_to_insert.to_sql("t_pole", engine, if_exists="append", index=False, method="multi", schema="tra")
'개발' 카테고리의 다른 글
DB Lock을 처음 경험한 날 (0) 2025.03.18 LATERAL JOIN에 대해 알아보자. (0) 2025.03.17 Pandas의 벡터 연산 (0) 2025.03.06 Chunk를 사용하여 대용량 파일 전송하기 (0) 2025.01.17 Synology Active Backup for Business 사용법 (Windows) (0) 2025.01.06 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)