Skip to content

[버그]: krx 주식 002170 정보를 quote 로 가져올 때 발생하는 버그 #48

@nohvenell2

Description

@nohvenell2

빠른 문제 해결을 위해 다음을 확인했나요?

  • PyKis Issues에서 검색했지만 유사한 버그를 찾지 못했습니다.

버그 설명

에러가 발생하는 코드

from util._pykis.Load_Pykis import KIS
stock = KIS.stock('002170').quote()

에러 내용

Exception has occurred: KeyError
"KisDomesticQuote.sector_name 필드의 bstp_kor_isnm값이 존재하지 않습니다. (KisString(field='bstp_kor_isnm', scope=None, absolute=False))"
  File "C:\Git\Pykis_Data\app\temp.py", line 3, in <module>
    stock = KIS.stock('002170').quote()
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: "KisDomesticQuote.sector_name 필드의 bstp_kor_isnm값이 존재하지 않습니다. (KisString(field='bstp_kor_isnm', scope=None, absolute=False))"

에러 원인 추측

python-kis 라이브러리 app/stock/quote.py 의 domestic_quote 함수에서 한국투자 open api 의
국내주식시세 -> 주식현재가 시세[v1_국내주식-008] API 를 사용하고 있습니다.
API doc 에서는 업종 한글명인 bstp_kor_isnm 값을 제공한다고 하지만,
직접 002170 주식 코드로 fetch 해본 결과 bstp_kor_isnm 키 자체가 존재하지 않습니다.
kospi 주식 815 개로 테스트 해본 결과 다음 코드의 주식들이 같은 현상이 나타나고, quote 실행시 같은 오류가 발생합니다.

ErrorStock = [ '002170', '002450', '004700', '004970', '007160', '011090', '011330', '013890', '016800', '030720', '033780', '071950', '079430', '084680', '111380', '134790', '194370', '241590']

종속성 버전 문제 진단

Version: PyKis/2.0.3
Python: CPython 3.12.5
System: Windows 10.0.19045 [AMD64]

Installed Packages:
========== requests ===========
Required: 2.32.3>=
Installed: Not Found
====== websocket-client =======
Required: 1.8.0>=
Installed: Not Found
======== cryptography =========
Required: 43.0.0>=
Installed: Not Found
========== colorlog ===========
Required: 6.8.2>=
Installed: Not Found

재현 방법

from pykis import PyKis
#pykis 객체
KIS = PyKis(
    id=SITE_ID,
    account=ACC_NO_REAL,
    appkey=APP_KEY_REAL,
    secretkey=APP_SEC_REAL,
    keep_token=True
)
stock = KIS.stock('002170').quote()

추가 정보

에러가 발생하는 종목들은 공통점이 있습니다.
코스피 주식 종목 엑셀 파일로 만들기를 이용해 엑셀 파일에서 확인해 본 결과 에러가 발생하는 18개의 종목들은 지수업종대분류, 지수업종중분류, 지수업종소분류 값이 0으로 업종 한글명을 알아낼수 없고, api 에서는 bstp_kor_isnm 값을 none 으로라도 제공해야하지만, 아예 key 자체를 제공하지 않는 것으로 보입니다

/pykis/api/stock/quote.py 404 줄을 bstp_kor_isnm 키가 없으면 상품유형타입을 빈문자열로 반환하도록 임시로 변경하니 에러는 발생하지 않았습니다.

 #sector_name: str = KisString["bstp_kor_isnm"] # 이전 코드
 sector_name: str = KisString["bstp_kor_isnm",""] # 변경된 코드

PR를 통해 라이브러리에 기여하고 싶으신가요?

  • 네, PR을 제출하여 도움을 주고 싶습니다!

Metadata

Metadata

Assignees

Labels

버그뭔가 작동하지 않습니다.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions