Study/Flask

[ Flask SQLAlchemy ] SQLAlchemy를 사용하여 엑셀파일 데이터를 DB에 넣기

SoShin_ 2021. 12. 30. 13:56
반응형

openpyxl을 이용하여 엑셀을 읽어 데이터를 SQLAlchemy를 사용해 DB에 넣기

from openpyxl import load_workbook  # 엑셀을 불러오기위해 openpyxl 패키지 사용
from kakao_api import generate_location
from models import Vegan
import app

wb = load_workbook(filename='VeganMap.xlsx')
# 엑셀 불러오기
ws = wb.active
# 현재 활성화 되어있는 시트 선택! [ 저는 시트가 하나라서 그게 선택됩니다!]
for row in range(3, ws.max_row):
    try:
        lat_log = generate_location(ws.cell(row, 6).value)
    except Exception as e:
        lat_log = [f"error{e}", f"error{e}"]
    vegan = Vegan(shop=ws.cell(row, 2).value, address=ws.cell(row, 6).value, sector=ws.cell(row, 3).value,
                  menu=ws.cell(row, 7).value, latitude=lat_log[0], longitude=lat_log[1])

    app.db.session.add(vegan)
    print(f"add 성공: {ws.cell(row, 2).value}")

app.db.session.commit()

위 코드의 generate_location은 도로명 주소를 받아 위도 경도를 리스트에 넣어 반환해주는 함수입니다.

이때 도로명 주소가 등록되어 있지 않아 Kakao API에서 위경도를 모를 경우에는 error를 출력하도록 try except를 통해 예외처리를 해주었습니다.

그 후 SQLAlchemy를 사용해 db에 session.add를 통해 데이터를 넣어주었습니다.

데이터를 넣어준 후에는 session.commit을 통해 수행한 내용을 저장해주어야 합니다!

 

데이터가 들어간 모습

 

반응형