소연의_개발일지

pandas와 sqlite3를 사용하여 csv파일을  sql 쿼리로 변환하는 코드이다.


 

전체 코드

import pandas as pd #판다스 라이브러리 임포트
import sqlite3 

# pandas 라이브러리를 사용해 csv -> sqlite 데이터베이스 변형
con = sqlite3.connect('data.db')

# read_csv() 함수를 사용해 csv파일 읽기
df = pd.read_csv('data.csv', encoding='cp949')

# to_sql() 함수를 사용하여 데이터를 sqlite에 삽입
# to_sql(테이블이름, db, 만약 존재한다면= 교체, index컬럼 생성x)
df.to_sql('menu', con=con, if_exists='replace', index=False)

#데이터베이스 연결 종료
con.close()

 

 

 

to_sql() 함수

: pandas 데이터프레임을 SQL 데이터베이스에 저장하는 함수이다. 

함수 사용 방법은 다음과 같다.

DataFrame.to_sql(name, con, schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None, method=None)
  • name: SQL 데이터베이스에 저장될 테이블 이름
  • con: SQL 데이터베이스 연결 객체
  • schema: 데이터를 저장할 스키마 이름
  • if_exists: 동일한 이름의 테이블이 이미 존재할 경우 어떻게 처리할지를 설정하는 옵션. fail(기본값), replace, append 중 하나를 선택할 수 있다.
  • index: 데이터프레임의 인덱스를 데이터베이스에 저장할지 여부를 결정한다. 기본값은 True이다.
  • index_label: 인덱스 컬럼의 이름을 지정합니다.
  • chunksize: 한 번에 데이터를 읽어들일 크기를 지정합니다. 기본값은 None으로, 모든 데이터를 한 번에 읽어들입니다.
  • dtype: 데이터 타입을 지정합니다. 기본값은 None으로, 데이터 타입을 추론한다.
  • method: 데이터를 저장하는 방식을 지정. multi(기본값)는 한 번에 모든 데이터를 삽입하며, single은 한 번에 한 행씩 삽입한다.

여기서 name, con, if_exists, index만 작성해도 상관없다.

 

con 매개변수

데이터베이스 연결 객체이다. 데이터베이스 연결 객체는 데이터베이스 서버에 연결하고 데이터베이스와의 통신을 가능하게 해주는 객체이다. sqlite3 모듈을 사용하여 데이터베이스 연결 객체를 생성할 수 있다. sqlite3.connect() 함수를 사용하여 데이터베이스에 연결하고, 반환된 연결 객체를 to_sql() 함수의 con  매개변수로 전달한다. 

 

if_exists 매개변수

  • fail: 데이터베이스에 이미 같은 이름의 테이블이 있을 경우 에러를 발생시킨다.
  • replace: 데이터베이스에 이미 같은 이름의 테이블이 있을 경우 해당 테이블을 삭제하고 새로운 테이블을 생성한다.
  • append: 데이터베이스에 이미 같은 이름의 테이블이 있을 경우 해당 테이블에 데이터를 추가한다.
profile

소연의_개발일지

@ssoyxon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!