레이블이 sqlite3인 게시물을 표시합니다. 모든 게시물 표시
레이블이 sqlite3인 게시물을 표시합니다. 모든 게시물 표시

목요일, 10월 03, 2024

개인프로젝트 -주식정보를 모아보자-

이전에 파이썬 모듈인 yfinance를 사용한 파이썬 스크립트를 github에 업로드한 적이 있었는데.. 오늘은 살짝 업데이트를 해보았습니다.

기존에는 스크립트를 실행하기 전에 주식정보의 업데이트 기간을 직접 수정했었는데 이번에는 sqlite3에 저장되어 있는 정보를 기준으로 최신 자료가 아닐 때만 업데이트 하도록 수정했습니다.

뭐.. 물룬 chatGPT에게 이런 기능의 코드를 작성해줘 라고 하니 뚝딱 나오더라구요.

거기서 필요한 내용만 수정해서(거의 99.99% 동일) github에 첫 finance 프로젝트 코드를 업데이트 했습니다. 

물론 자동화 루틴에 airflow라는... 좋은 툴이 있기는 하지만.. 

개인 프로젝트 작업이다보니 그냥 시스템을 사용하기전에 한번 클릭해서 사용할 수 있도록 코드를 수정했다는 것에 만족하고 있습니다. :)


오늘 코드는

update_stock.py: Yahoo Finance에서 미국 주식 Ticker로 주식 정보를 저장하는 스크립트

update_stock.KR.py: Yahoo Finance에서 한국 주식 정보를 저장하는 스크립트

입니다.



출처: @ye._.vely618

월요일, 5월 27, 2024

flask에서 파일 접근 방법

지금까지 열심히 모아놓은 sotck db를 활용해서 flask를 통해 보기 좋게 화면을 하나 만들어보려고 작업중에 있는데 예상치 못한 난관에 부딪혀서 몇일을 해메였는데...

결국은 별거 아니었다는...


그래서 준비했습니다.

!!Flask를 사용해서 sqlite3 접근시 주의사항!!

플랫폼은 Windows 10 (Home), 파이썬은 3.12, flask, jinja2 등등 필요한 라이브러리는 pip3 default로 설치하였고, jupyter-notebook를 사용해서 개발중에 있습니다.

문제가 되었던 것은 

C:\WORK\jupyter 폴더에 flask의 Home 폴더가 되어 해당 폴더 밑에 index.py와 stocks.db 이름을 가지는 sqlite3 db를 위치해 두었습니다.

이전에 github에 올려두었던 python script를 사용해서 매주 업데이트 하고 있고, 최근에는 dart 정보도 추가해 놓은 터였죠.

index.py파일에서 "con = sqlite3.connect('stocks.db')" 코드로 접근해서 stock라는 테이블에서 자료를 뽑아오는 거였는데 no such table stock라고 stock 테이블이 없다고 에러를 뿜어대는데.. 

당연히 index.py와 같은 디렉토리 안에 있었기 때문에 

con = sqlite3.connect('stocks.db')

적어준것이 었는데,

con = sqlite3.connect('C:\WORK\jupyter\stocks.db')

이렇게 절대 경로를 모두 넣어줘야지 정상적으로 작동이 되는 것이었습니다.


No such table 에러를 구글에 검색해보니... migration이 제대로 안되어서 blablabla

도움이 하나도 안되는... (일반적인 경우 저 검색결과가 도움이 되었겠지만, 나는 아무것도 안했단말이다. ㅋ)


결국 connect 시 절대 경로를 모두 포함된 파일명을 사용하면 되는 것이었습니다.

다음에는 좀 더 유용한 내용으로 돌아오도록 하겠습니다.



출처: @ye._.vely618


일요일, 4월 24, 2016

SQLite3에서 import/export 하기

SQLite3를 사용할때 csv로 import, export하는 방법에 대해서
알아보겠습니다.

이게 왜 필요한거냐구요?
저한테 필요한거라서 포스팅하는겁니다.
그리고 알아두시면 쓸일이 있을지 누가 아나요? :)

csv를 특정 테이블에 import하기

#sqlite3 <database>
sqlite> .headers on
sqlite> .separator ","
sqlite> .import <in.csv> <table.name>
이때 in.csv는 쉼표 구분자로 되어 있어야 합니다.
다른 구분자로 되어 있으면 아마 제대로 import가 되지 않겠죠? :)

특정 테이블을 csv로 export하기

#sqlite3 <database>
sqlite> .headers on
sqlite> .mode csv
sqlite> .output <output.txt>
sqlite> select * from <table.name>;
이때 output.txt는 export할때 내용을 받는 파일 이름입니다.
그리고 tab구분자를 사용하려면 아마 .mode tabs 하시면될겁니다.

그리고 sqlite3 데이터베이스안에서 작업하지 않고 다음과 같이 명령어 한줄로도 끝낼수 있습니다.

sqlite3 -header -separator " " ./home/data.db "select * from table;" > out.txt      
sqlite3 -header -separator "," ./home/data.db "select * from table;" > out.txt        
sqlite3 -header -separator quot;\t" ./home/data.db "select * from table;" > out.txt 


모 그렇다고 합니다. :)