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를 이용하자.