project 파일의 루트 경로(manage.py가 있는 경로)에 데이터를 넣어줄 python file을 만들어야 된다. file의 구성은 다음과 같다.
import os
import django
import csv
import sys
os.chdir(".")
print("Current dir=", end=""), print(os.getcwd())
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print("BASE_DIR=", end=""), print(BASE_DIR)
sys.path.append(BASE_DIR)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "rolex.settings")
django.setup()
#-------------------여기까지가 데이터를 넣기 위한 세팅 -----------------------#
# 내가 넣고자 하는 app의 models에서 모든 class를 가져온다.
from product.models import *
#-----------------------Size table에 데이터 넣기 ------------------------#
# path를 루트 경로의 rolex_csv 파일 알에 있는 size.csv로 지정해준다.
CSV_PATH = './rolex_csv/size.csv'
# 파일을 열어서 csv 파일을 mysql row로 넣어준다.
with open(CSV_PATH, newline='') as csvfile:
data_reader = csv.DictReader(csvfile)
# product.models의 Size class의 object를 만들어준다.
# 이 때 csv 파일의 row name을 key값(['size']으로 넣어줘야 한다.
# 아래 Material도 동일!
for row in data_reader:
Size.objects.create(
size = row['size'],
)
#---------------------Material table에 데이터 넣기 -----------------------#
CSV_PATH = './rolex_csv/material_put.csv'
with open(CSV_PATH, newline='') as csvfile:
data_reader = csv.DictReader(csvfile)
for row in data_reader:
Material.objects.create(
color = row['name'],
image_url = row['image_url'],
background_url = row['background_url']
)
파일을 실행했을 때 다음과 같이 프로젝트 디렉토리가 나온다면 데이터가 정상적으로 들어간 것이다. sql에 들어가서 확인해보면 다음과 같이 나온다.
❯ python createdata.py
Current dir=/Users/yeni/Desktop/rolex_cur/Rolex-backend
BASE_DIR=/Users/yeni/Desktop/rolex_cur
mysql> use rolex
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
mysql> select * from materials;
mysql> select * from sizes;