장고의 데이터 처리를 위해서 csv 내보내기를 기본 csv 라이브러리를 쓰니깐 속도가 너~~~~~~~~~~무 느려
어쩔수 없이 Pandas를 사용할 수 밖에 없네
to_csv 를 사용해서 내보내는데, 몇 초 만에 되네 ㅋㅋㅋ 한줄씩 내보내기 하니깐 몇 분 기다려도 안되던데...
암튼 내보내기 하니깐 앞에 원하지 않는 인덱스 값이 컬럼으로 들어와서 불편해서 제거하는 것을 찾아보니 떡 있네.
정말 간단한데 to_csv 혹은 to_excel 함수를 사용하실 때 아래 코드처럼 'index=False' 만 추가하면 되거든요 👍
# file1을 인덱스 없이 '실습1_수정.xlsx'파일로 내보내기
file1.to_excel('실습1_수정.xlsx',index=False)
실제 내 코드에는 response 에 데이터를 실어줘서 브라우저에서 다운로드 하도록 되어 있으니 아래 코드와 같다.
# Create the HttpResponse object with the appropriate CSV header.
response = HttpResponse(content_type="text/csv", charset='euc-kr')
response['Content-Disposition'] = 'attachment; filename="csv_result.csv"'
queryset = Object.filter(...).values_list("name", ... , "endtime")
resultDf = pd.DataFrame(list(queryset), columns=['이름', ... , '완료시간'])
response = HttpResponse(content_type="text/csv", charset='euc-kr')
response['Content-Disposition'] = 'attachment; filename="csv_result.csv"'
resultDf.to_csv(path_or_buf=response, index=False)
이 코드도 여기 글을 참고함
https://stackoverflow.com/questions/11697887/converting-django-queryset-to-pandas-dataframe
Diana Silaraja 님의 사진, 출처: Pexels