"Pandas:DataFrame:다른 형태로 저장하고 불러오기"의 두 판 사이의 차이

Pywiki
둘러보기로 가기 검색하러 가기
3번째 줄: 3번째 줄:
  
 
= mysql =
 
= mysql =
 +
mariasql도 동일하다.
  
 
=== sqlalchemy 사용 ===
 
=== sqlalchemy 사용 ===
 +
이 방법은 굉장히 간단하다. 다만, 프라이머리키가 중복된 데이터가 있는 경우엔 적용할 수가 없다.(이런 경우엔 겹치는 데이터를 제거해준 후 넣어야 한다.)
 
{| class="wikitable"
 
{| class="wikitable"
 
!과정
 
!과정
61번째 줄: 63번째 줄:
 
|한 번에 몇 개의 데이터를 처리할지.
 
|한 번에 몇 개의 데이터를 처리할지.
 
|}
 
|}
 +
|}
 +
 +
=== 단순 입력 ===
 +
{| class="wikitable"
 +
!과정
 +
!설명
 +
!방법
 +
|-
 +
|라이브러리 설치
 +
|
 +
|pip install pymysql
 +
|-
 +
|모듈 임포트
 +
|
 +
|import pymysql
 +
|-
 +
|DB연결
 +
|
 +
|DB = pymysql.connect(host='localhost', port=3306, db='db이름', user="root", passwd='비밀번호', charset='utf8')
 +
|-
 +
|커서생성
 +
|sql을 순회하는 커서 생성
 +
|cur = self.coinDB.cursor()
 +
|-
 +
|함수제작
 +
|함수로 만들어 처리하면 편할 듯하다.
 +
|<syntaxhighlight lang="python">
 +
def df_to_db(df, db):
 +
   
 +
</syntaxhighlight>
 
|}
 
|}
 
[[분류:Pandas:DataFrame]]
 
[[분류:Pandas:DataFrame]]

2021년 9월 23일 (목) 13:23 판

1 개요

데이터프레임을 사용했다면 그냥 여기에서 멈추는 것이 아니라, 다른 형태로 저장해두어야 추후에 불러와 사용할 수 있다.

2 mysql

mariasql도 동일하다.

2.1 sqlalchemy 사용

이 방법은 굉장히 간단하다. 다만, 프라이머리키가 중복된 데이터가 있는 경우엔 적용할 수가 없다.(이런 경우엔 겹치는 데이터를 제거해준 후 넣어야 한다.)

과정 설명 방법
라이브러리 설치 pip install sqlalchemy
모듈 임포트 from sqlalchemy import create_engine
엔진 연결 DB를 만든 후에 DB와 연결할 수 있다.
engine = create_engine("mysql+pymysql://{user}:{pw}@localhost/{db}"
                       .format(user="root",  # sql 계정 입력.
                               pw="0000",  # sql 비밀번호 입력.
                               db="dbname"))  # 연결할 db이름 입력.
sql로 전환 이미 만들어진 테이블에 dataframe을 넣는다.

(역시, 테이블은 미리 준비되어야 한다.)

옵션은 아래에서 설명한다.

data.to_sql('테이블명', con = engine, if_exists = 'append', chunksize = 1000)
옵션값
인자 설명
if_exists
옵션 설명
appends 기존에 데이터가 들어가 있으면 덧붙인다.
replace 기존의 데이터를 대체한다.(테이블 단위로 덮어씌워, 기존 데이터는 사라진다.)
fail 테이블 안에 데이터가 있으면 아무것도 하지 않음.
chunksize 한 번에 몇 개의 데이터를 처리할지.

2.2 단순 입력

과정 설명 방법
라이브러리 설치 pip install pymysql
모듈 임포트 import pymysql
DB연결 DB = pymysql.connect(host='localhost', port=3306, db='db이름', user="root", passwd='비밀번호', charset='utf8')
커서생성 sql을 순회하는 커서 생성 cur = self.coinDB.cursor()
함수제작 함수로 만들어 처리하면 편할 듯하다.
def df_to_db(df, db):