더북(TheBook)

그럼 일봉 데이터가 저장된 테이블에서 가장 최근 날짜를 조회하려고 SQL을 select max(열)처럼 만들어 사용하겠습니다. 그러나 다음 코드에서 format에 전달되는 문자들을 치환하여 SQL을 살펴보면 조금 의아한 부분이 있습니다. SQL을 보면 종목 코드 테이블에서 가장 큰 index를 조회하라는 의미인데, 가장 큰 index를 조회하는 이유는 get_price_data 함수에서 얻어 온 데이터를 데이터베이스에 저장할 때 날짜(date)를 index로 저장했기 때문입니다. 따라서 데이터베이스에서 조회할 때는 index가 날짜를 의미하게 됩니다.

sql = "select max(`{}`) from `{}`".format('index', code)
cur = execute_sql(self.strategy_name, sql)
last_date = cur.fetchone()

이후 SQL의 조회 결과인 데이터의 가장 최근 저장 일자가 last_date에 저장됩니다. 이 날짜와 오늘 날짜를 비교하여 같지 않다면 데이터 저장 작업이 필요하다고 판단해서 API로 얻어 온 데이터를 저장합니다. 반대로 last_date가 오늘 날짜와 같다면 이미 저장 작업을 수행한 후 프로그램이 재실행된 것이라고 판단하여 해당 종목은 저장하지 않고 넘어갑니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.