본문 바로가기
my_stock/_Technical_Analysis

[Python] Dart 재무재표 분석 _ [2] 불러온 Dart 고유코드 DB에 저장하기

by boolean 2021. 8. 30.
728x90

[Python] Dart 재무재표 분석 _ [2] 불러온 Dart 고유코드 DB에 저장하기

 

Dart에서 Zipfile 형태의 고유번호 xml 리스트 불러와서 UnZip 후 DataFrame 형태로 반환

한뒤 DataBase에 저장하는  Python  code 이다.

테스트를 하다보면  mysql database table에 데이터가 누적 되어 지는데 

기존 데이터를 지우고 인덱스 번호(Increment)를 초기화 하는 과정까지 기록 하였다

 

import os
import django
from django.db import connection as con
os.environ.setdefault("DJANGO_SETTINGS_MODULE", 'testDjango.settings')
django.setup()

from stock.packages import create_dart_info as dart

from stock.models import Stock

crtfc_key = '1aeb3259d8e0aeba54201cf7a049848316269bcd'
df = dart.get_corpcode(crtfc_key)

## 테이블의 기존 데이터를 모두 지움
Stock.objects.all().delete()

## 테이블의 인덱스번호를 1부터 다시 시작하게 초기화함
def MakeDefaultIncrement():
    try:
        cursor = con.cursor()

        strSql = 'alter table stock_stock auto_increment = 1;'
        result = cursor.execute(strSql)
        con.commit()
        con.close()
    except:
        con.rollback()
        print("Failed reset increment")

MakeDefaultIncrement()

## 테스트 출력
print(df.loc[0][1]) 

## 데이터가 모두 지워지고 인덱스번호가 1부터 시작하게 초기화된 
## 테이블에 데이터 새로 저장하기
for i in range(0, len(df)):
    Stock.objects.create(corp_code=df.loc[i][0],
            corp_name=df.loc[i][1], 
            stock_code=df.loc[i][2], 
            modify_date=df.loc[i][3],)
            
## mysql database table에 저장된 데이터 불로와서 터미널에 출력해보기            
 data_stock = Stock.objects.vaues()
 print(data_stock)

mysql database에 저장된 dart 고유코드를 불러온 모습

 

  • connection: 데이터베이스에 접속을 하기 위한 모듈
  • settings.py에 입력한 데이터베이스 정보를 가지고 접속
  • cursor(): cursor 객체 생성 cursor 란 SQL문을 수행하고 결과를 얻는데 사용하는 객체
  • cursor.execute(): 쿼리문을 연결된 DB로 보내 쿼리를 실행
  • cursor.fetchall(): 쿼리 실행 결과로 반환된 전체 데이터를 데이터베이스 서버로부터 가져옴
  • connection.commit(): 데이터에 대한 변경사항이 있다면 이를 확정, 갱신
  • connection.close(): 데이터베이스와의 연결을 닫음
  • connection.rollback(): 쿼리문 실행 도중 잘못된 경우 실행 전으로 되돌려 놓음

 

 

댓글