더북(TheBook)

check_transaction_closed를 만들었으니 if 문의 다른 조건을 살펴보면 check_table_exist 함수를 이용하여 종목별 가격 정보를 담은 테이블이 없는지 확인합니다. 여기서 테이블 이름은 해당 종목의 종목 코드를 사용합니다.

종목 코드를 이름으로 한 테이블이 데이터베이스에 없다면 check_table_exist(self.strategy_name, code) 결과는 False로 반환되고, not 연산자로 최종 결과는 True가 됩니다. 따라서 장 종료 이후고 테이블도 없어 if 문 안으로 진입하게 되면, API를 이용하여 상장일부터 가장 최근 거래 일자까지 일봉 데이터를 얻어 와 price_df에 저장됩니다.

if check_transaction_closed() and not check_table_exist(self.strategy_name, code):

    price_df = self.kiwoom.get_price_data(code)
    insert_df_to_db(self.strategy_name, code, price_df)
else:
    pass

price_df에 저장된 데이터는 insert_df_to_db 함수로 데이터베이스에 저장됩니다. 이후 프로그램이 다시 실행될 때는 테이블이 이미 생성되어 있으므로, check_table_exist(self.strategy_name, code) 결과는 True가 되고 not 연산자로 조건 결과는 False가 되기 때문에 if 문 안으로 진입하지 않습니다.

insert_df_to_db(self.strategy_name, code, price_df)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.