ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [파이썬]엑셀파일을 mysql에 옮겨보자
    Python 2020. 9. 12. 01:10
    반응형

    엑셀 파일(xlsx, xls)을 파이썬을 이용해 mysql에 옮겨보겠습니다.

     

    간단하게 순서를 나눠보면

    1. 엑셀 파일 읽어오기

    2. mysql과 연결하기

    3. 읽어온 데이터를 mysql에 넣기

     

    시작하기에 앞서

    pymysql과 pandas를 설치해주시기 바랍니다.

    아나콘다를 쓰시면 anaconda prompt를 찾아서 실행하신 다음 pip install pymysql, pandas를 하시면 되십니다.

     

    그럼 이제 코드를 봅시다.

    1. 엑셀 파일 읽어오기

    import pandas as pd
    
    data = pd.read_excel("./db_score.xlsx")
    #print(data)

    pandas에 있는 read_excel함수를 이용하면 쉽게 읽어올 수 있습니다.

    이때 data에는 dataframe으로 저장이 됩니다.

    그래서 프린트를 하면 엑셀에 저장되어있는 그대로 출력되는 걸 볼 수 있죠.

     

    2. mysql과 연결하기

    import pymysql
    
    conn = pymysql.connect(host='localhost', user='root', password='1234', db='university')
    curs = conn.cursor(pymysql.cursors.DictCursor)

    connect함수를 통해 연결을하고 cursor를 사용해 앞으로 쿼리문을 작성해 실행하게 됩니다.

    connect의 인자로는 mysql에서 데이터베이스를 만들 때 사용하셨던 정보들을 이용하시면 됩니다.

     

    3. 읽어온 데이터를 mysql에 넣기

    mk_table = 'create table if not exists db_score(sno int primary key, midterm float, final float)'
    cusr.execute(mk_table)
    
    sql = 'insert into db_score (sno, midterm, final) values(%s, %s, %s)'
    for idx in range(len(data)):
    	curs.execute(sql, tuple(data.values[idx]))
    conn.commit()
    
    #종료
    curs.close()
    conn.close()

    먼저 테이블을 만들어주었습니다.

    그리고 삽입할 쿼리문도 만들어주었고

    반복문들 돌면서 data들을 삽입해주었습니다.

    이때  curs.execute(sql, tuple(data.values[idx]))를 썼는데 첫 번째 인자는 쿼리문을, 두 번째 인자는 쿼리문에 들어갈 데이터를 주게 되는데 튜플을 전달해주어야 합니다. 또한 헤더도 제거해야 하기 때문에 values를 썼습니다.

    삽입문을 다 실행하고 나서 mysql에서 실행하기 전에 commit을 해야 반영되는 것 잊지 마시기 바랍니다.

     

    반응형

    댓글

Designed by Tistory.