TIL42 | Python에서 CSV파일 다루기(db_uploader.py)
2021. 11. 5. 00:52ㆍ언어/Python
반응형
CSV 데이터
- 쉼표를 기준으로 항목을 구분하여 저장하는 데이터
,
로 규칙적으로 구분되어 있기 때문에 엑셀과 같은 프로그램으로 읽을 수도 있고 생성할 수도 있다.- 주로 테이블 형태로 구성된 자료나 텍스트 자료를 저장할 때 사용한다.
- 같은 데이터를 저장한다고 했을 때, JSON 데이터에 비해 절반이하의 용량으로 저장할 수 있다.
파이썬에서 CSV파일 다루기
파이썬에는 CSV파일을 다루기 위한 모듈을 제공한다.
import csv
with open('test.csv') as in_filte:
data_reader = csv.reader(in_file)
next(data__reader, None)
for row in data_reader:
print(row)
with open(file_name) as (file_name)
외부 파일을 연 상태로 작업한다
csv.reader()
파일 내부의 모든 행을 반환한다.
row라는 변수에 담고, for 문
을 활용해서 한줄 한줄 읽으면서 데이터를 처리한다.
Database에 CSV파일의 데이터 삽입하기
파이썬에서 CSV파일을 다룰 수 있기 때문에, 이를 활용하여 CSV파일 데이터를 Database에 삽입하는 python파일을 작성할 수 있다.
1. db_uploader.py 생성
root 경로에 db_uploader.py 파일을 생성한다.
2. 모듈 import
import csv
import os
import django
3. 환경변수 설정
Django 내부에 있는 views.py나 models.py가 아닌 내부 파이썬 파일을 작성하기 때문에, 이 파일의 내용이 Django에 적용될 수 있도록 설정해준다.
import csv
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_name.settings')
django.setup()
4. model 불러오기
여기서 주의해야할 점은 위에서 설정한 환경변수 설정 밑에 model을 import해야한다.
환경변수 설정을 제일 마지막에 해주면 Django의 model을 찾을 수 없기 때문에 에러가 발생한다.
import csv
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'like.settings')
django.setup()
from products.models import Product
5. CSV파일 데이터 Database에 삽입하기
...
with open(CSV_PATH_PRODUCTS) as in_file:
data_reader = csv.reader(in_file)
next(data_reader, None)
for row in data_reader:
if len(row) == 0 : continue
Product.objects.create(
title = row[0],
sub_title = row[1],
price = row[2],
thumbnail_image_url = row[3],
description = row[4]
)
반응형
'언어 > Python' 카테고리의 다른 글
TIL46 | Query Performance Counter Decorator (0) | 2021.11.10 |
---|---|
TIL45 | QuerySetAPI - select_related & prefetch_related (0) | 2021.11.10 |
TIL41 | CodeKata 복소수 계산, 리스트 뒤집기 (0) | 2021.11.02 |
TIL39 | CodeKata 가장 자주 등장한 숫자 출력하기, 물을 담을 수 있는 가장 넓은 면적 (0) | 2021.10.29 |
TIL38 | CodeKata 숫자 중에서 과반수가 넘은 숫자 찾기, 여러 괄호 규칙 짝 맞추기 (0) | 2021.10.27 |