CREATE TABLE, REPLACE INTO
파이썬 증권 데이터 분석 책을 참고하여 테이블을 만들고 데이터를 최신화하는 법에 대해 알아봤습니다.
MariaDB를 사용하고 있고 MariaDB는 HeidiSQL을 통해 GUI로 접근할 수 있습니다.
먼저 HeidiSQL창에서 다음과 같인 테이블이 존재하지 않는다면 test란 테이블을 만들도록 작성했습니다.
PRIMAY KEY (기본키)는 code(종목코드)로 설정했습니다.
정확히는 USE FOR_TRAIN을 쓴 후에 생성해줘야하는데, 사용할 데이터베이스를 더블클릭하게 되면 진한 글씨체로 바뀌고, 그러면 쓰지않고 생성해줘도 됩니다.
그 후 새로고침을 하면 오른쪽 화면과 같이 테이블이 생성되었음을 알 수 있습니다.
이와 같은 과정은 pymysql을 이용해서도 가능합니다.
pymysql의 connection객체를 생성 후에 cursor()객체를 생성해서 사용하는 방식입니다.
daily_price라는 테이블에는 주가정보를, company_info 테이블에는 회사정보를 담을 것입니다.
이렇게 생성한 테이블에 데이터를 추가합니다.
테이블에 이미 해당 데이터가 존재하는 경우 에러가 발생할 수 있기에 INSERT INTO 구문대신 REPLACE INTO 구문을 사용합니다.
company_info에 데이터를 추가하는 코드입니다.
company_info 테이블에는 last_update라는 열이 존재하는데, 현재 날짜와 비교하여 오늘 날짜가 최신날짜가 아니라면 업데이트하는 방식입니다.
REPALCE INTO 구문은 REPLACE INTO table이름 ( column name) VALUES (값들) 와 같이 사용할 수 있습니다.
(값들)에 값이 들어갈 때는 f-string과 같은 방식으로 문자열로 변환 후 넣어줄 수 있습니다.
그 후에는 pandas의 read_sql로 정보들을 dataframe으로 쉽게 읽어올 수 있습니다.
daily_price에 주가 정보를 추가해줄건데 그러기 위해서 네이버 금융에서 카카오 주가 정보를 수집해옵니다.
https://mkk4726.tistory.com/28
네이버 금융 web scraping
* 코드는 Jupyter Notebook에서 작성되었습니다. 다음과 같은 네이버 금융 홈페이지에서 날짜, 종가, 전일비, 시가,고가, 거래량 정보를 따오는 코드를 공유해보려한다. 네이버 금융 홈페이지에 카카
mkk4726.tistory.com
이렇게 뽑아온 데이터를 형식에 맞게 바꿔줍니다.
이제 이 데이터를 daily_price에 추가해줍니다.
이렇게 추가한 정보를 앞서 설명한 read_sql로 쉽게 사용할 수 있습니다.
이 책의 데이터베이스 부분의 컨셉은 회사정보와 주가정보를 매일 데이터베이스에 업데이트하고,
그렇게 저장된 정보들을 가지고 데이터분석을 통해 퀀투투자 전략을 세우겠다는 것입니다.
이렇게 하기 위해서 이러한 코드들을 두 개의 class ( 업데이트하는 것, 조회하는 것)로 만들고
Run 레지스트리에 업데이트하는 class 등록해 컴퓨터가 켜질 때마다 실행될 수 있도록 설정합니다.
그리고 조회하는 class를 이용해 사용합니다.
잘 짜여진 코드를 따라 쳐보는 과정에서 정말 많은 것들을 배울 수 있는 것 같습니다.