python에서 로컬 DB에 데이터를 넣을 때,
Postman, zshell을 이용해서 하나하나 넣어줬었다.
하지만 처리해야하는 데이터량이 많아지면
데이터를 한번에 등록할 수 있는 방법이 필요했다.
아래와 같이 csv read-create 방법을 이용할 경우 한꺼번에 많은 데이터를 등록할 수 있고,
또 다른 백엔드 개발자가 로컬 DB에 동일한 정보를 빠르게 등록할 수 있다.
import os
import django
import csv
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "chickenfood.settings")
django.setup()
from products.models import *
CSV_PATH_LOCATION1 = "brand.csv"
CSV_PATH_LOCATION2 = "type.csv"
CSV_PATH_LOCATION3 = "product.csv"
CSV_PATH_LOCATION4 = "option.csv"
def insert_brand():
with open(CSV_PATH_LOCATION1) as in_file:
data_reader = csv.reader(in_file)
next(data_reader, None)
for row in data_reader:
Brand.objects.create(
name = row[0],
image = row[1]
)
def insert_type():
with open(CSV_PATH_LOCATION2) as in_file:
data_reader = csv.reader(in_file)
next(data_reader, None)
for row in data_reader:
Type.objects.create(
name = row[0]
)
def insert_product():
with open(CSV_PATH_LOCATION3) as in_file:
data_reader = csv.reader(in_file)
next(data_reader, None)
for row in data_reader:
brand = Brand.objects.get(name=row[2])
type = Type.objects.get(name=row[3])
Product.objects.create(
name = row[0],
price = row[1],
brand = brand,
type = type,
like_number = int(row[4]),
thumbnail = row[5],
detail_image = row[6],
element = row[7],
weight = row[8]
)
def insert_option():
with open(CSV_PATH_LOCATION4) as in_file:
data_reader = csv.reader(in_file)
next(data_reader, None)
for row in data_reader:
Option.objects.create(
name = row[0]
)
insert_brand()
insert_type()
insert_product()
insert_option()