크롤링 해서 작성된 csv 파일을 DB에 넣어보자 👊
#필요한 모듈을 import
import os
import django
import csv
import sys
#장고 내부(views.py, models.py)가 아닌 외부 파이썬 파일에서 작업
#이 파일이 장고에 적용될 수 있도록 설정하는 코드
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '프로젝트명.settings')
django.setup()
#모델 import
from product.models import (
)
CSV_PATH_PRODUCTS = './프로젝트명.csv'
with open(CSV_PATH_PRODUCTS) as in_file:
data_reader = csv.reader(in_file)
#첫 행은 출력되지 않게 함
next(data_reader, None)
for row in data_reader:
print(row)
from django.db import models
class Menu(models.Model):
name = models.CharField(max_length=10)
class Category(models.Model):
name = models.CharField(max_length=50)
menu = models.ForeignKey('Menu', on_delete=models.SET_NULL, null=True)
class Drink(models.Model):
name = models.CharField(max_length=10)
menu = models.ForeignKey('Menu', on_delete=models.SET_NULL, null=True)
category = models.ForeignKey('Category', on_delete=models.SET_NULL, null=True)
import os
import django
import csv
import sys
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'starbucks.settings')
django.setup()
from product.models import (
Menu,
Category,
Drink
)
CSV_PATH_PRODUCTS = './products.csv'
def insert_menu():
with open(CSV_PATH_PRODUCTS) as in_file:
data_reader = csv.reader(in_file)
next(data_reader, None)
for row in data_reader:
if row[0]:
menu_name = row[0]
if not Menu.objects.filter(name = menu_name).exists():
Menu.objects.create(name = menu_name)
def insert_category():
with open(CSV_PATH_PRODUCTS) as in_file:
data_reader = csv.reader(in_file)
next(data_reader, None)
for row in data_reader:
if row[0]:
menu_name = row[0]
menu_id = Menu.objects.get(name = menu_name).id
category_name = row[1]
if not Category.objects.filter(
name = category_name,
menu_id = menu_id
).exists():
Category.objects.create(
name = category_name,
menu_id = menu_id
)
def insert_drink():
with open(CSV_PATH_PRODUCTS) as in_file:
data_reader = csv.reader(in_file)
next(data_reader, None)
for row in data_reader:
if row[0]:
menu_name = row[0]
menu_id = Menu.objects.get(name = menu_name).id
category_name = row[1]
category_id = Category.objects.get(name = category_name).id
drinks = row[2].split(',')
for drink in drinks:
if drink:
if not Drink.objects.filter(
name = drink,
menu_id = menu_id,
category_id = category_id
).exists():
Drink.objects.create(
name = drink,
menu_id = menu_id,
category_id = category_id
)
insert_menu()
insert_category()
insert_drink()