DAN lab./소스코드

Python에서 MySQL을 거쳐 CSV 까지

김야키 2018. 1. 15. 17:48

참고 사항

Python에서 DBMS를 거쳐 CSV파일을 만들어 저장하고

해당 CSV파일을 Pandas에서 제공하는 형식으로 반환받기 까지의 과정입니다.


Python 버젼 : 3.6.3(Anaconda)

DBMS : MariaDB

사용 라이브러리 : PyMysql, CSV, Pandas


바로 진행하겠습니다.

#-*- coding: utf-8 -*-
import pymysql
import csv
import pandas as pd

# mysql과 연동하는 작업
conn = pymysql.connect(host='',user = '',
password='', db='',charset='utf8')
# user는 본인 계정, password는 본인 비밀번호 기본 7895, db는 각자 db

# host가 있는 부분은 DBMS가 설치된 서버의 IP주소


curs = conn.cursor()
# DBMS의 커서를 제어하는 명령어

# Python에서 DBMS를 직접 제어할 수 있도록 도와준다.


# 데이터를 읽어와서 저장하는 작업

# feature : DBMS에 저장된 테이블의 이름이 들어갈 변수
def make_csv(feature):

# 컬럼 명을 가져오기 위한 작업
column = []
sql = "show full columns from %s" % feature
curs.execute(sql)
rows = curs.fetchall()
for i in range(len(rows)):
column.append(rows[i][0])


# 본인이 DB의 컬럼 명이 필요가 없다면 위의

# 컬럼 며을 가져오는 작업은 넘어가도 된다.



# 쿼리문을 직접 돌리는 작업
sql = "select * from %s" % feature
curs.execute(sql)
rows = curs.fetchall()

# 데이터 타입을 list형태로 바꿔주는 작업

rows = list(rows)
for a in range(len(rows)):
rows[a] = list(rows[a])

# DBMS에서 가져온 데이터는 튜플의 형태로 되어 있기 때문에

# 위의 작업을 해야 데이터가 입력이 된다.



# 데이터를 작성해서 저장하는 작업

# CSV파일은 한글이 잘 깨지기 때문에 utf-8로 인코딩을 해주어야 한다.
f = open('%s.csv' % feature, 'w', encoding='utf-8', newline='')


# CSV파일을 입력하기 위한 명령어
wr = csv.writer(f)

# 컬럼 명 입력
wr.writerow(column)

# 나머지 데이터 입력
for i in range(len(rows)):
wr.writerow(rows[i])
f.close()
# 연결 해제
conn.close()

# DBMS연결 해제

# 데이터를 읽어오는 작업
def open_csv(feature):
f = open('%s.csv' % feature, 'r', encoding='utf-8')
data = pd.read_csv(f)

# 읽어온 데이터를 Pandas에서 제공하는 형식의 데이터로 저장한다.

return data


if __name__ == "__main__":

item = input(">>> ")
try:
make_csv(item)
data = open_csv(item)
print(data)
except:
print("정보가 없음")

Pandas의 형태로 데이터를 반환한 이유는 데이터를 분석할 때에 효율적이기 때문입니다.

그리고 굉장히 깔끔하게 데이터가 반환되기 때문이죠!