엑셀파일

위와같은 엑셀파일을 Django ORM을 이용해서 insert 하고자한다.

 

소스코드


import openpyxl
import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "subul.settings")
django.setup()

from order.models import Order
from core.models import Location
from product.models import ProductCode

import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "subul.settings")
django.setup()

 

위의 3코드는 Django의 설정파일을 set해주고 django.setup()으로 django를 실행한다고 생각하면 편하겠다

 


wb = openpyxl.load_workbook('productOrder.xlsx') # productOrder.xlsx 파일을 열어서 wb 변수에 할당
sheet1 = wb['Sheet1'] # 엑셀의 Sheet1을 open
rows = sheet1['A3':'L310'] # sheet1의 A3부터 L310까지 rows 변수에 할당

for row in rows:

    # rows는 여러줄이니 row는 한줄

    # row[0]은 가로 한줄의 제일 첫번째 세로칸 즉 A3,B3.... L3


     dict = {}
     dict['id'] = row[0].value
     dict['type'] = row[1].value
     dict['specialTag'] = row[2].value
     dict['ymd'] = row[3].value
     dict['orderLocationName'] = row[5].value
     dict['codeName'] = row[6].value
     dict['amount'] = row[7].value
     dict['count'] = row[8].value
     dict['price'] = row[10].value
     dict['memo'] = row[11].value

     product_Instance = ProductCode.objects.get(codeName=dict['codeName'])
     toLocation_instance = Location.objects.filter(codeName=dict['orderLocationName']).filter(type='05').first()
     dict['code'] = product_Instance.code
     dict['productCode'] = product_Instance
     dict['orderLocationCode'] = toLocation_instance
     Order(**dict).save() # 킬링포인트 **딕셔너리를 활용해서 쉽게 insert


'python' 카테고리의 다른 글

파이썬 데코레이터 활용(로깅)  (1) 2021.09.02
python oracle 데이터 json serialize(django)  (0) 2020.02.25
python super  (0) 2019.12.26
python 메모리 관리(memory allocation)  (4) 2019.11.15
클래스 관계 IS-A 상속  (0) 2019.11.07

+ Recent posts