참고 사항
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의 형태로 데이터를 반환한 이유는 데이터를 분석할 때에 효율적이기 때문입니다.
그리고 굉장히 깔끔하게 데이터가 반환되기 때문이죠!