chat gpt가 생기면서 참으로 편리해진 부분 중 하나인데 검색을 하면 왠만한건 다 뚝!딱!해서 나온다는 것이다.
내가 주식 탭 화면을 만들기 앞서 코스피,코스닥,원유,금 등 한국거래소에서 가져오는 API를 저장할 DB 를 어떤걸 쓸까하고 고민한 끝에
✅ 금융 데이터 저장에 적합한 데이터베이스 선택
Django에서 금융 데이터를 저장할 때 PostgreSQL을 추천하지만, 프로젝트의 규모와 요구사항에 따라 다른 선택지도 고려할 수 있습니다.
1️⃣ PostgreSQL (추천 ✅)
✔ 금융 데이터 저장에 가장 적합한 데이터베이스
✔ JSON, 시계열 데이터, 트랜잭션 관리, 확장성 우수
✔ 대량의 주식 데이터, 실시간 분석, 복잡한 쿼리 가능
💡 왜 금융 데이터에 PostgreSQL이 좋을까?
- 정확한 실수 연산 지원: DECIMAL 타입 지원 → 주가, 거래량 등 정밀한 숫자 연산 가능
- JSONB 지원: API에서 받은 JSON 데이터를 직접 저장 가능
- 시계열 데이터 처리 가능: 주식 가격, 환율 같은 데이터를 효율적으로 관리
- 트랜잭션 처리 강력: 금융 데이터의 일관성을 유지하는 데 필수
- 확장성 좋음: 읽기 부하를 분산시키거나, 여러 서버로 확장 가능
💡 PostgreSQL 테이블 예시
from django.db import models
class Stock(models.Model):
symbol = models.CharField(max_length=10, unique=True) # 종목 코드
name = models.CharField(max_length=100) # 종목명
price = models.DecimalField(max_digits=12, decimal_places=2) # 현재 가격
volume = models.BigIntegerField() # 거래량
last_updated = models.DateTimeField(auto_now=True) # 마지막 업데이트 시간
💡 PostgreSQL 설치 및 설정
# PostgreSQL 설치 (Ubuntu 기준)
sudo apt update && sudo apt install postgresql postgresql-contrib
# Django 프로젝트에 PostgreSQL 연결
pip install psycopg2
Django settings.py 설정:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'your_db_name',
'USER': 'your_db_user',
'PASSWORD': 'your_db_password',
'HOST': 'localhost',
'PORT': '5432',
}
}
2️⃣ TimescaleDB (PostgreSQL 기반 시계열 DB)
✔ PostgreSQL을 기반으로 한 시계열 데이터베이스
✔ 주식 가격, 환율, 실시간 데이터 분석에 최적
✔ PostgreSQL 확장 기능이라 쉽게 연동 가능
📌 PostgreSQL을 이미 사용하고 있다면 TimescaleDB를 추가하면 강력한 시계열 데이터 분석이 가능
# TimescaleDB 설치
sudo apt install timescaledb-postgresql-14
Django 모델에서 시계열 데이터 저장:
class StockPrice(models.Model):
symbol = models.CharField(max_length=10)
timestamp = models.DateTimeField()
price = models.DecimalField(max_digits=12, decimal_places=2)
class Meta:
indexes = [
models.Index(fields=['symbol', 'timestamp']), # 시계열 쿼리 최적화
]
3️⃣ MySQL (대안으로 가능)
✔ 속도가 빠르고, 트랜잭션 관리 가능
✔ PostgreSQL보다 간단한 설정
🚫 시계열 데이터 처리 기능 부족
🚫 JSONB 지원 미흡
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'your_db_name',
'USER': 'your_db_user',
'PASSWORD': 'your_db_password',
'HOST': 'localhost',
'PORT': '3306',
}
}
🚀 추천: PostgreSQL + TimescaleDB
대량의 주식 데이터를 관리해야 한다면 PostgreSQL 또는 TimescaleDB가 가장 적합합니다.
MySQL은 단순 CRUD만 필요할 때 사용 가능하지만, 금융 데이터에는 PostgreSQL이 더 강력한 기능을 제공합니다! 💡
chat gpt는 🚀 추천: PostgreSQL + TimescaleDB를 추천 하였다.
우선 PostgreSQL에 대용량 DB저장 하기에도 유용하고 특히 주식같은 실시간 자료들 시계열처리 및 복잡한 쿼리 작성에도 유용하다고 하니 해당 기술을 써보도록 한다.
어차피 저번에 장고강의 들을때 도커로 postgreSQL을 사용 했었기에 이 경로에 사용하는게 적합할듯 싶어 해당 경로로 연결 하게 됨
그런데 이마저도...gpt에게 물어보니 상세하게 답변을 해준다;;;
🚀 Django에서 requirements.txt 실행하는 방법 (맥 기준)
✅ 1. requirements.txt 파일이 뭔가요?
- Django 프로젝트에서 필요한 Python 패키지를 저장하는 파일
- 프로젝트 실행할 때 필요한 모든 패키지를 한 번에 설치 가능
- 협업할 때 동일한 환경을 쉽게 만들 수 있음
📌 파일 예시 (requirements.txt)
Django==4.2
psycopg2==2.9.9
djangorestframework==3.14.0
numpy==1.26.0
pandas==2.1.1
✅ 2. requirements.txt 실행 명령어
📌 가상환경을 실행한 상태에서 아래 명령어 입력
pip install -r requirements.txt
📌 설치된 패키지 확인
pip list
📌 설치 오류가 나올 경우 (해결 방법)
pip install --upgrade pip # pip 업그레이드
pip install --no-cache-dir -r requirements.txt # 캐시 없이 강제 설치
✅ 3. requirements.txt 파일 생성 방법
현재 가상환경에서 설치된 패키지를 requirements.txt로 저장하려면:
pip freeze > requirements.txt
이렇게 하면 현재 설치된 모든 패키지가 requirements.txt에 저장됨.
✅ 4. requirements.txt 업데이트
만약 새 패키지를 추가한 후 requirements.txt를 업데이트하려면:
pip freeze > requirements.txt
이후 다시 설치할 때:
pip install -r requirements.txt
✅ 5. requirements.txt 실행 관련 주요 명령어 정리
# 1. 가상환경 실행 (맥)
source venv/bin/activate
# 2. 패키지 설치
pip install -r requirements.txt
# 3. 설치된 패키지 목록 확인
pip list
# 4. 현재 설치된 패키지 저장
pip freeze > requirements.txt
# 5. pip 업그레이드 후 다시 설치
pip install --upgrade pip
pip install --no-cache-dir -r requirements.txt
이제 requirements.txt를 잘 활용하면 Django 프로젝트 환경을 쉽게 관리할 수 있어! 🚀
gpt의 친절한 답변 덕분에 나는 아래 캡쳐화면과 같은 결과를 이루게 되었다.
'IT > toy project' 카테고리의 다른 글
[자산관리 day-4.3] 한국거래소(KRX) Open API Django에 셋팅하기(Django) 2 (2) | 2025.01.01 |
---|---|
[자산관리 day-4.2] 한국거래소(KRX) Open API Django에 셋팅하기(Django) 1 (0) | 2025.01.01 |
[자산관리 day-4.1.1] Django로 주식 관련 Investing.com의 API 설정(Chat gpt) (0) | 2024.12.30 |
[자산관리 day-4.1] 주식(Stock)관련 Chat gpt로 알아보기 (0) | 2024.12.30 |
[자산관리 day-2.5] 마인드맵 그리기 2 (1) | 2024.10.13 |