csv 파일이 우리 데이터랑 구조가 맞지 않는 경우. 혹은 테이블 컬럼 순서가 다른 경우가 많다.
from product.models import Menu, Category, Drink
파이썬 쉘에서 불러옴.
Menu.objects.all()
db생성을 위해 디비 업로더를 만든다.
import os
import django
import sys
import csv
장고 내 파일이 아닌 뷰쓰 모델쓰가 아닌 외부 파이썬 작성 중. 이 파일 내용이 장고에 적용될 수 있도록 설정을 바꿔줌.
os.environ.setdefault("DJANGO_SETTINGS_MODEULE", "starbucks.settings")
=> starbucks : 프로젝트 이름.
그 다음 임포트 한다.
from products.models import Menu, Category, Drink
가지고 있는 csv 파일의 경로도 변수화해서 저장해주기.
CSV_PATH_PRODUCTS = './products.csv'
witho open 이라는 파이썬 내장 기능 이용해 파일 열 수 있다
witho open(CSV_PATH_PRODUCTS) as in_file(인파일이라는 이름으로 연다)
이제 한줄씩 데이터를 읽을 것이다.
data_reader = csv.reader(in_file)
for row in data_reader: (한줄 씩 읽어주기 때문에 줄 기준으로 full loop)
print(row)
각 줄의 칼럼들이 리스트 안에 들어가 있다. 각 줄의 첫번째 요소들이 메뉴 칼럼이 되는 것. 그래서 필요한 정보를 인덱스대로 부른다.
(빈칸일 경우, 빈칸 아닐 때 불러오게 조건 설정해두면 된다)
제일 첫번째 줄 안나오게 하려면, 구글링해서 찾아보기.
=> next(data_reader, None) 이런식으로 가능.
첫 번째 프로젝트에서 db_uploader를 팀원분이 맡아서 해주셨는데, 우리 팀의 경우에 카테고리가 총 4단계에 걸쳐서 맞물려있고, 필터 또한 many to many 인데다가 얽혀서 내가 디비업로더를 짜기는 커녕 이걸 이해하는 데도 시간이 꽤 많이 걸린다.
이해를 위해 시간을 꽤 들였지만, 아직 완전히 이해하지 못해서 내일 멘토님한테 물어보아야 겠다.
우리 사이트가 이쪽이 많이 복잡한 편이라, 배웠던거에 비해 난이도가 너무 높아졌다.
맞물린게 너무 많고, 카테고리 이름도 비슷하고 거기에 필터까지 껴서 어렵다... csv 파일도 7개가 넘는다. 내일이면 온전히 이해할 수 있었으면 좋겠다. 화이팅❤️
'Django' 카테고리의 다른 글
[Django] Self-reference model (0) | 2020.07.05 |
---|---|
[Django] Many to Many 다대다 관계 (0) | 2020.07.05 |
[Django]Select_related (0) | 2020.06.25 |