목록프로그래밍/Python (11)
코딩하는 문과생
[서론] 스프링 부트 개발을 중단하기로 결정하고 나서, 파이썬으로 작성한 데이터 분석배치가 붕 떠버렸다. 배치는 이미 개발이 완료된 상태라 그냥 두기엔 아깝기도 해서, 알림봇을 하나 만들어 사용해보려 한다. 매일 새벽에 배치작업이 마무리되고 나서 슬랙 봇으로 알림이 오는 아키텍처를 구상했고, 파이썬 slackclient 패키지를 이용해 손쉽게 구현할 수 있었다. [구현] 구현은 1. 슬랙 워크스페이스와 채널을 생성 후, 2. 알림봇 앱을 만들어 생성된 앱을 채널에 추가한다. 이후 3. 파이썬 배치가 동작하면서, slack api로부터 발급받은 토큰을 이용해 배치 결과를 4. 슬랙으로 전송해 준다. - Slack 에서 해야할 일 1. 워크스페이스 생성 우선 알림을 받을 워크 스페이스를 먼저 생성한다. 워크..
파이썬 배치 스크립트 작성 후, 여러 파일을 순차적으로 호출하는 일이 필요해졌다. 처음에는 crontab을 이용해 하나씩 호출하려 했으나 관리가 될까 의문이 들었고, 여러 서치 끝에 python-batch-runner라는 모듈을 발견해 이를 적용해보기로 했다. 우선 국내 자료가 하나도... 없어서 doc과 stackoverflow를 최대한 참조하면서 개발을 진행했다. [순서] 1. 우선 pip를 이용해 모듈을 다운 받는다. pip install python-batch-runner 2. 설치가 완료된다음 다음 명령어를 입력하면 프로젝트명과 프로젝트 경로를 지정한다. $ pyrunner --setup ProjectName : updatedaybatch ProjectPath : updateDay - 처음에 잘..
개인 프로젝트를 하던 도중에 여러 분석 기법들을 이용해 데이터를 분석하는 코드를 작성해야 했다. [처음 도입한 방식 : 공통 테이블] 추후 추가될 가능성을 생각해 코드의 일반화가 필요했고, 하드코딩을 줄이고 순수 로직만을 코드에 녹여내기 위해서 분석 기법을 관리하는 테이블을 생성하기로 결정했다. 설계한 테이블은 아래와 같다. trade_cls_cd분석기법코드trade_cls_nm분석기법명timing_period분석기간safe_degree기법 신뢰도batch_name분석 배치명use_yn사용유무 해당 테이블을 배치에서 조회해 for을 돌리는 방식으로 구성해, 최대한 수정을 줄일 수 있는 방향으로 코드를 작성하고자 했다.(몇 가지 기법을 나중에 추가해도 테이블에 데이터만 넣으면 된다.) - timingDay..
[개요] API로 호출한 데이터를 DB에 저장할 일이 생겼다. 약 16,000개 기업에 대해, API로 조회한 약 5년치 주가를 테이블에 저장하는 것인데, 데이터의 양은 대략 16,000 * 5년 * 약 200일(주가시장 거래일) = 약 1,600만 정도다. (절대로 무시할 양이 아니다...) [이전 코드] 처음엔 생각나는 대로 코드를 작성했는데, 결론적으로 처음 작성한 코드는 사용이 불가했다. 그 이유는 시간이 오래걸려서 인데, 한 회사의 주가를 가져와 저장하는 데 약 1분정도 소요되었다. 작성했던 코드를 간략히 설명하자면 1. API를 호출해 DataFrame에 담는다. 2. 테이블의 최신날짜를 조회한다. 2-1. 데이터가 없다면 from_date을 2016년 1월 1일로 설정 2-2. 데이터가 있다..