자신의 DB에 주식 마스터 테이블을 만들고, 파이썬에서 pykrx 모듈을 사용해 주식 마스터 정보를 가져오는 과정입니다.
pykrx는 github에서 공개하고 있으며, 한국의 주식 정보를 쉽게 가져다 쓸수 있도록 만들어진 모듈입니다.
아래 페이지를 통해 관련 정보 및, 사용 방법을 확인해주세요.
- https://github.com/sharebook-kr/pykrx
개인적으로 pykrx를 만들어 배포해주신 분들께 매우 감사한 마음입니다. 많은 귀찮은 과정을 손쉽게 해결해주셨으니까요, 좋은일 가득하시길!!
아래 소스는 pykrx를 사용해, 종목코드와 종목명, 마켓명(코스피, 코스닥)을 리스트 형태로 가져와 조회하는 내용입니다.
앞으로의 확장성을 고려해 클래스 형태로 모듈을 만들었습니다.
# pip install pymysql
# pip install matplotlib
# pip install pykrx
from pykrx import stock
class MyCollectKRX:
@staticmethod
def get_stock_master(_market):
stk_master = []
for stk_cd in stock.get_market_ticker_list(market=_market):
stk_nm = stock.get_market_ticker_name(stk_cd)
stk_master.append((stk_cd, stk_nm, _market))
return stk_master
if __name__ == '__main__':
myCollectKRX = MyCollectKRX()
stk_master_all = myCollectKRX.get_stock_master('KOSPI')
stk_master_all.extend(myCollectKRX.get_stock_master('KOSDAQ')) # 리스트 두 개를 합치기 위해서는 extend 사용
for stk in stk_master_all:
print(stk)
위 모듈을 실행하면, 종목코드, 종목명, 마켓명을 리스트 형태로 출력할 수 있습니다. 이후, 이 데이터를 DB화해서 저장까지 해볼 수 있겠죠.
여기서, 눈여겨 볼만한거 하나는 리스트 형태의 데이터를 합치기 위해서는 extend를 사용한다는 점입니다.
append는 리스트 내에 하나의 요소를 더하는 작업이고, 리스트 두 개를 단순히 합치기 위해서는 extend를 사용해야 합니다.
위 내용을 DB로 저장하기 위해서 테이블을 생성할 차례입니다. 여기서는 MySQL을 사용합니다. 아래와 같이 MYTRDDB 데이터베이스를 생성하고, 해당 데이터베이스에 테이블까지 생성합니다.
# SQL 툴을 이용해 MySQL에 접속해서 실행
CREATE DATABASE MYTRDDB; # DB 생성
CREATE TABLE MYTRDDB.KRX_STOCK(
STK_CD VARCHAR(40) NOT NULL
,STK_NM VARCHAR(200) NOT NULL
,MKT_NM VARCHAR(40) NOT NULL
,PRIMARY KEY(STK_CD)
);
위 테이블에 Insert하는 과정까지 추가해서 파이썬 소스를 변경해보면, 아래와 같습니다.
# pip install pymysql
# pip install matplotlib
# pip install pykrx
from pykrx import stock
import pymysql # MYSQL 연결및, SQL 실행을 위해 추가
class MyCollectKRX:
@staticmethod
def get_stock_master(_market):
stk_master = []
for stk_cd in stock.get_market_ticker_list(market=_market):
stk_nm = stock.get_market_ticker_name(stk_cd)
stk_master.append((stk_cd, stk_nm, _market))
return stk_master
if __name__ == '__main__':
myCollectKRX = MyCollectKRX()
stk_master_all = myCollectKRX.get_stock_master('KOSPI')
stk_master_all.extend(myCollectKRX.get_stock_master('KOSDAQ')) # 리스트 두 개를 합치기 위해서는 extend 사용
# MySQL 연결 객체 생성
myConn = pymysql.connect(user='???', password='???', host='localhost', port=3306,
charset='utf8', database='MYTRDDB')
myCursor = myConn.cursor()
for stk in stk_master_all:
sql_ins = "INSERT INTO MYTRDDB.KRX_STOCK(STK_CD ,STK_NM ,MKT_NM) VALUES(%s, %s, %s)" # INSERT SQL 작성
myCursor.execute(sql_ins, (stk[0], stk[1], stk[2])) # 튜플 형태로 파라미터 전달해서, SQL 실행
# COMMIT 처리 및, MySQL 개체 CLOSE
myConn.commit()
myCursor.close()
myConn.close()
print('작업 완료')
위 파이썬 소스를 실행한 후에, MySQL에 접속해, 아래와 같이 SQL을 실행해보면, 주식 마스터 정보가 자신의 DB에 만들어진 것을 확인할 수 있습니다.
SELECT T1.*
FROM MYTRDDB.KRX_STOCK T1
ORDER BY T1.STK_CD LIMIT 5;
STK_CD STK_NM MKT_NM
-------- ----------------- --------
000020 동화약품 KOSPI
000040 KR모터스 KOSPI
000050 경방 KOSPI
000060 메리츠화재 KOSPI
000070 삼양홀딩스 KOSPI
오늘은 여기까지입니다.
'데이터분석 > TradeOptimizer' 카테고리의 다른 글
PyKRX - 주가 이력 정보 DB화하기 (0) | 2022.11.29 |
---|---|
PyKRX - 주가 이력 정보 가져오기 (0) | 2022.11.25 |
Python 기초 - 날짜 다루기(문자에서 날짜로, 날짜에서 문자로, 날짜 계산) (0) | 2022.11.24 |
Trade Optimizer (0) | 2022.11.23 |
네이버 클라우드에 MySQL 설치와 외부 접속 허용해주기 (0) | 2022.11.15 |
네이버 클라우드로 서버 생성하기 (0) | 2022.11.15 |
Anaconda 가상 환경 파이썬 라이브러리 추가 (0) | 2022.10.27 |
Trade Optimizer란? (0) | 2022.10.25 |