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

yeeun lee·2020년 4월 27일

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개의 댓글