WinGyu_coder

Python, Django 장고로 모의투자 서비스 제작하기 (5 - 1) - Django DB에 엑셀 데이터 넣기 본문

Django 백엔드의 모든것

Python, Django 장고로 모의투자 서비스 제작하기 (5 - 1) - Django DB에 엑셀 데이터 넣기

WinGyu 2024. 3. 2. 17:29

이전 포스트 

https://wingyu-story.tistory.com/134

 

Python, Django 장고로 모의투자 서비스 제작하기 (5) - Django models.py 모델 필드 정의하기

이전 포스트 Python, Django 장고로 모의투자 서비스 제작하기 (4) - Django 프로젝트 시작하기, APP 제작하기 (startproject, startapp) https://wingyu-story.tistory.com/133 Python, Django 장고로 모의투자 서비스 제작하

wingyu-story.tistory.com

 

깃허브 

https://github.com/decembaek/auto_stock_django

 

GitHub - decembaek/auto_stock_django

Contribute to decembaek/auto_stock_django development by creating an account on GitHub.

github.com


필자가 업로드해둔 엑셀파일 3가지를 장고 DB에 저장할거다.

 

여태 포스트한 블로그 글 내용을 보면 무슨 내용일지 알거라 생각하겠다.

 

그래도 엑셀파일 3개를 재 업로드 해두겠다.

 

idxcode.xlsx
0.02MB
stock_data.xlsx
0.27MB
theme_code.xlsx
0.10MB

 

이 모든 파일을 설치해둔다.

그리고 본인이 아는 경로에 저장해두면 된다.

 

"""
kospi, kosdap 종목 정보 데이터 넣기 

"""

import os
import django

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

import pandas as pd
from korea_stock.models import StockCodeModel


def load_data_from_excel(excel_path):
    # Excel 파일 읽기
    df = pd.read_excel(excel_path, engine="openpyxl")

    # 데이터프레임의 각 행을 반복 처리
    for _, row in df.iterrows():
        print("CODE", row["code"])
        # date = row["stock_open_date"]
        # date.split("/")
        face_value = row["face_value"]
        if face_value == "무액면":
            face_value = 0
        StockCodeModel.objects.create(
            standard_code=row["standard_code"],
            code=row["code"],
            name=row["name"],
            stock_name=row["stock_name"],
            en_name=row["en_name"],
            stock_open_date=row["stock_open_date"].replace("/", "-"),
            market=row["market"],
            stock_kind=row["stock_kind"],
            affiliated=row["affiliated"],
            stock_type=row["stock_type"],
            face_value=face_value,
            total_stock_count=row["total_stock_count"],
        )


# Excel 파일 경로
excel_path = "data/stock_data.xlsx"

load_data_from_excel(excel_path)

 

가장 중요한 kospi, kosdaq 데이터를 넣는 코드이다.

 

django 모듈을 가져오고 엑셀 데이터를 가져와 Django DB에 저장한다. 

다음 (6) 포스트에 각각 하는 역할을 정의해두겠다.

 

# Excel 파일 경로에 

excel_path 에 내가 저장한 엑셀 경로를 작성하면 된다.

 

그 외 idxcode 및 theme_code 엑셀 저장 코드다.

 

"""
# 테마코드
# 테마명
# 표준산업분류코드

데이터 넣기

"""

import os
import django

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

import pandas as pd
from korea_stock.models import KSICCodeModel


def load_data_from_excel(excel_path):
    # Excel 파일 읽기
    df = pd.read_excel(excel_path, engine="openpyxl")

    # 데이터프레임의 각 행을 반복 처리
    for _, row in df.iterrows():
        # row["엑셀 위 데이터"]
        # face_value = row["face_value"]
        print(row)
        KSICCodeModel.objects.create(
            theme_code=row["theme_code"],
            theme_name=row["theme_name"],
            ksic_code=row["ksic_code"],
        )


# Excel 파일 경로
excel_path = "data/theme_code.xlsx"

load_data_from_excel(excel_path)
"""
## 업종섹터코드

"""

import os
import django

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

import pandas as pd
from korea_stock.models import KisSectorModel


def load_data_from_excel(excel_path):
    # Excel 파일 읽기
    df = pd.read_excel(excel_path, engine="openpyxl")

    # 데이터프레임의 각 행을 반복 처리
    for _, row in df.iterrows():
        # row["엑셀 위 데이터"]
        # face_value = row["face_value"]
        print(row)
        KisSectorModel.objects.create(
            sector_code=row["sector_code"],
            sector_name=row["sector_name"],
        )


# Excel 파일 경로
excel_path = "data/idxcode.xlsx"

load_data_from_excel(excel_path)

 

파이썬 개발을 하는 독자들이라면 잘 할거라 생각된다.

 

원래 개발자는 코드로 대화를 한다.

 

읽어주셔서 감사합니다.