⭐️ Tips. csv 파일 mysql에 업로드하기

yeeun lee·2020년 4월 27일
0

1. 파일 만들기

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

2. 파일 실행

파일을 실행했을 때 다음과 같이 프로젝트 디렉토리가 나온다면 데이터가 정상적으로 들어간 것이다. 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;

profile
이사간 블로그: yenilee.github.io

0개의 댓글