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]
        )

 

반응형