기존에 사용하던 sqlite3 기반으로는 매주 없데이트 하는데 시간이 오래 걸려서 mongodb로 한번 변경해보는 작업을 진행하였는데 만족스러웠습니다.
※ mongodb가 상장되어 있는지도 몰랐는데 이번 Dan ives의 ETF(IVES, IVE아닙니다. 물론 IVE도 있고 IVE도 있습니다.)에 mongodb(MDB)가 포함되어 있어 간만에 다시 mongodb를 사용해보기로 하여 아래와 같이 환율, 지수, 주가 정보를 업데이트하는 코드를 수정해 보았습니다.
첫번째 수정작업(Gemini)
(기존에 sqlite3로 사용하던 스크립트 업로드) 첨부한 파일은 기존에 sqlite3를에 테이블을 생성해서 파이썬으로 야후 파이낸스에서 각 ticker 정보를 검색해서 sqlite3로 저장하는 스크립트들 입니다.
환율과 지수, 한국주식, 미국주식 정보를 가져와서 sqlite3 테이블에 저장하는 것입니다.
나는 이 스크립트를 mongodb와 python을 사용해서 작동하도록 하고 싶습니다.
몽고디비는 내 컴퓨터에 설치하였습니다.
첨부한 파일의 스크립트를 참고하여 데이터베이스와 table을 생성하는 코드를 작성해줘 그리고 두번째로는 설치한 몽고DB(mongodb://localhost:27017)에 ticker를 업데이트하는 파이썬 코드를 작성해줘.
현재는 sqlite3에서 table lock로 한번에 한개의 정보만 다운로드 받아 insert하도록 되어있습니다. 환율,야후파이낸스에서 지수,한국주식,미국주식정보를 빠르게 받을 수 있도록 개선된 파이썬 코드를 작성해줘.
python 3.12 버전, yfinance 0.2.61 기준으로 코드를 작성해줘
아쉽게도 기존에 LLM으로는 해결하지 못했던 Session 문제가 그대로 노출되어서 아래와 같이 기존에 문제없이 사용하는 Session 코드를 그대로 보여주고 참고하라고 해서 다행이 잘 해결되었네요
두번째 수정작업(chatGPT)
(생성한 파일 중 update.py파일을 업로드)오류가 발생하여 정상적으로 db에 정보가 쌓이지 않고 있습니다. 문제가 있는 부분을 확인해서 수정해줘.
그리고
# 세션 생성 및 User-Agent 설정 headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36'} session = requests.Session(impersonate="chrome", headers=headers, verify=False)
이 코드를 참고해서 세션 연결을 ticker 다운로드 할 떄마가 하는것이 아니라 스크립트 시작시 세션을 연결하고 모든 작업이 끝나면 세션을 닫으세요
chatGPT가 확인해준 원인들
(일부 원인이 될 수 있지만 정확하게 해결해주지는 못하더라구요)
구분 원인 설명 1 ❌ requests.Session()과yfinance.download()의 호환성 문제yfinance.download()은requests가 아닌yfinance.shared._session기반으로 동작합니다.curl_cffi.requests.Session을 전달하면TypeError또는AttributeError가 발생할 수 있습니다.2 ❌ MongoDB date필드 처리 오류datetime.date객체는 PyMongo가 BSON 변환 시 오류를 일으킬 수 있습니다.datetime.datetime객체로 저장해야 합니다.3 ❌ latest_dates집계 시strftime()호출 오류doc['max_date']가datetime이 아닌str로 들어오는 경우.strftime()호출 시 AttributeError 발생 가능성이 있습니다.4 ⚠️ 중복 삽입 방지 미비 insert_many()를 단순 실행하면 중복 데이터가 계속 쌓이거나 오류로 중단될 수 있습니다.5 ⚠️ 병렬 실행 시 세션 공유 문제 ThreadPoolExecutor내부에서yfinance.download()호출 시 세션/캐시 충돌 가능성이 있습니다.6 ⚠️ 한국 주식 Ticker 일부 .KQ종목이 오류 발생코스닥 종목이 .KS로 지정되어 다운로드 실패 가능성 있습니다.
그래서 아래와 같이 정상 적동하는 2개의 스크립트를 얻게 되었습니다.
다음에는 국내 부동산시세 정보도 알아서 모아올 수 있는 방법이 있는지 확인해보도록 하겠습니다. 물론 다른 서비스들이 있는것으로 봐서는 방법이 없지는 않겠지만 저는 실시간까지는 필요없으니 평이한 방법으로 시도해보도록 하겠습니다. :)
![]() |
| 출처: @ye._.vely618 |
