[Python] Python 데이터프레임 Mysql로 데이터 내보내기

1. pymysql 라이브러리 설치

pip install pymysql

 

2. 파이썬 ↔ Mysql 데이터베이스 연동

from sqlalchemy import create_engine
import pymysql

db_connection_path = 'mysql+pymysql://<Username>:<비밀번호>@<Hostname>:<Port>/<database>'
db_connection = create_engine(db_connection_path)

conn = db_connection.connect() 
conn

( ※ '<', '>' 부호 는 제거해야 함)

<Username>, <비밀번호>, <Hostname>, <Port> : Mysql Connection - edit 에서 확인

<database> : SHOW DATABASES; 코드로 조회

 

3. 파이썬 → Mysql 데이터베이스 전송

df_data.to_sql('table_name', con=db_connection, if_exists='replace', index=False)

df_data : 파이썬 데이터프레임 데이터 이름

table_name : mysql에서 지정할 테이블 이름

  • if_exists 옵션 3가지
    1. 'append' : 기존 테이블에 데이터가 있어도 그대로 하행으로 추가
    2. 'replace' : 기존 테이블을 모두 삭제하고 새로운 데이터 추가 
    3. 'fail': 기존 테이블이 있으면 아무것도 하지 않음

※ 참고로 to_sql 데이터 전송 방식은 upsert가 불가능하다. upsert 하려면 추가적인 노력이 필요한데,

현재 인터넷에 나와있는 방식은 mysql의 테이블을 통 테이블을 그대로 불러와 join방식으로 검증 후 내보내는 방식이 있다.

하지만, 이러한 방식은 데이터 양이 방대할수록 시간도 오래걸리고 적합하지 않은 듯하다.