728x90
[Pandas] to.sql()
to_sql()
판다스 데이터 프레임을 SQL 데이터 베이스에 저장하는 방법으로 to.sql() 메서드가 있다.
이를 통해 로컬 또는 원격 데이터베이스에 데이터를 쉽게 저장할 수 있다.
기본 사용법
먼저 다음과 같이 라이브러리를 import 해준다.
import pandas ps pd
from sqlalchemy import create_engine
create_engine은 SQLAlchemy 라이브러리에서 제공하는 함수로, 데이터베이스와의 연결을 설정하는 데 사용된다.
# 샘플 데이터프레임 생성
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'city': ['New York', 'Los Angeles', 'Chicago']}
df = pd.DataFrame(data)
# SQLAlchemy 엔진 생성
engine = create_engine('sqlite:///example.db')
# 데이터프레임을 SQL 테이블로 저장
df.to_sql('users', con=engine, if_exists='replace', index=False)
해당 코드는 DB 엔진을 생성 후 users라는 테이블을 생성하여 데이터프레임의 데이터를 해당 테이블에 저장한다.
각 매개변수의 역할은 다음과 같다.
name | SQL 데이터베이스에 생성될 테이블의 이름 |
con | SQLAlchemy 엔진이나 데이터베이스 연결 객체 |
if_exists | 테이블이 이미 존재할 때의 동작을 지정 - fail : 기본값. 테이블이 이미 존재하면 아무 작업도 하지않고 에러를 발생 시킴 - replace : 테이블이 이미 존재하면 기존 테이블을 삭제하고 새 테이블을 만듦 - append : 테이블이 이미 존재하면 기존 테이블에 데이터를 추가 |
index | 데이터프레임의 인덱스를 저장할 지 여부를 지정 |
💡 주의사항
to_sql()은 기본적으로 한번에 모든 데이터를 삽입하며, 대용량 데이터의 경우 메모리 사용량이 많아질 수 있다.
따라서 대용량 데이터일 경우 chunksize 매개 변수를 사용하여 데이터를 청크 단위로 삽입하는 것이 좋다.
dtype
dtype을 이용해서 SQL 테이블의 컬럼 데이터 타입을 지정할 수 있다.
딕셔너리 형태로 컬럼 이름과 SQL 타입을 매핑할 수 있다.
from sqlalchemy.types import Integer, String
df.to_sql('users', con=engine, if_exists='replace', index=False,
dtype={'name': String, 'age': Integer, 'city': String})
반응형
'👩💻 Develope > Python' 카테고리의 다른 글
[Python] glob (1) | 2024.09.26 |
---|---|
[Python] SQLAlchemy 이해하기 (0) | 2024.09.02 |
[Pandas] apply로 다중 반환 값을 여러 열에 할당하기 (0) | 2024.08.22 |
[Pandas] 데이터프레임에서 날짜와 시간 다루기 (0) | 2024.08.09 |
[Python] 파일 날짜 가져오기 (0) | 2024.08.08 |