Mysql, Maria DB

[Python] pandas를 이용한 mariadb 결과값 csv 파일로 저장

Pydole 2019. 8. 26. 01:22

 

DB의 결과값을 CSV로 저장할 필요가 있을 수도 있는데, 저장할 양이 많아질 수록 pandas를 이용하면 빠른 속도로

저장할 수 있다.

 

샘플 : 윈도우 성능 퍼포먼스 데이터 약 80만건

 

 


 

import pymysql

print('start-time : ', str(datetime.now())[:19] )
def filewrite():
     with open('mysql_output.csv', 'a') as f:
         f.writelines(text[:-1]+'\n')

conn = pymysql.connect(host=' ', user=' ', password=' ' ,db=' ', charset='utf8')
c = conn.cursor()
sql = 'select * from perfomance_log where logtime between "2019-08-10 00:00:00" and "2019-08-10 23:59:59"'
c.execute(sql)
rows = c.fetchall()

for x in rows:
     text = ''
     for y in x:
         y = str(y)
         text = text+y+','    # 구분자 : ,
     filewrite()

c.close()
conn.close()
print('end-time : ', str(datetime.now())[:19])

 

 

pymysql 모듈일 이용하여 csv파일로 저장하였을 때, 약 20분이 소요

start-time : 2019-08-26 00:49:29

end-time : 2019-08-26 01:09:12

 

 

import pandas as pd
import pymysql
from datetime import datetime

print('start-time : ', str(datetime.now())[:19] )

conn = pymysql.connect(host=' ', user=' ', password=' ' ,db=' ', charset='utf8')
query = 'select * from perfomance_log where logtime between "2019-08-10 00:00:00" and "2019-08-10 23:59:59"'

df = pd.read_sql_query(query,conn)
df.to_csv(r'mysql_output_pandas.csv', index=False)
print('end-time : ', str(datetime.now())[:19])

 

 

pandas를 이용하여 csv파일로 저장하였을 때, 약 2분이 소요

 

start-time : 2019-08-26 00:53:28

end-time : 2019-08-26 00:55:36

 

 

 

2개의 파일도 용량으로 비교했을 때, 정상적으로 생성된것으로 보여지고 엑셀에서도 읽을 수 있는 csv파일로 정상적으로

저장되었다.

 

 

 

 

 

단순히 CSV로 저장할 때는 pandas를 이용하자.

 

 

파이썬 pandas를 이용한 maria db data csv 저장