가상환경 설치로 깨끗한 환경에서 시작해주세요
(혹시 pip 패키지들 충돌 방지하기 위함)
conda create --name <가상환경이름>
conda activate <가상환경이름>
requirements.txt 를 기준으로 설치:
pip install -r requirements.txt
루트 디렉토리에 추가
python main.py
참고) 추후 디렉토리 생성 시 모든 폴더에
__init__.py 넣어줘야함. 설사 빈 파일이라도 상관없어요.
파이썬이 해당 디렉토리를 패키지로 인식해서 추후 import하기 위함임.
참고2) model import 시
같은 디렉토리 안에 있으면
from .model import TradeDetail # .model.py 가 같은 디렉토리에 있으면 이런 식으로 표기
아니라면..
from app.database.model import Base
이런 식으로 모든 경로를 작성해주어야 하며,
파이썬은 슬래시가 아닌 . 온점으로 경로를 구분함 참고.
참고3) 파이썬 변수명으로
하이픈 못써요. "-" 못씀. 언더바 "_" 써야 해요.
- 하나의 앱 안에서 모든 기능을 뒤섞지 않고,
- 도메인 단위로 폴더를 분리
- 각 도메인은 독립적으로 개발 및 유지보수 가능
미들웨어/db config (데이터베이스 host, 비번 등 관리)
- 공통 설정이나 유틸리티 모듈을 두는 곳
- DB 연결 및 ORM 설정
- DB 엔진 생성
- Base 클래스 선언 (SQLAlchemy Base 등)
도메인으로 디렉토리 분리
ex) http://127.0.0.1:8000/api/v1/data_lab
이 엔드포인트에 필요한
함수 / 루트 정의
-
실제 서비스 도메인 코드가 들어가는 최상위 폴더
-
각 도메인별로 폴더로 분리되어 있음 (도메인 분리 설계)
account→ 회원, 계좌 관련 도메인auth→ 인증/인가 모듈community→ 커뮤니티 기능data_lab→ 데이터 분석, 집계my-page→ 마이페이지, 유저 개인 정보 관리
-
각 도메인 폴더 안에는 MVC 구조로 파일이 배치됨
- model.py → DB 모델 정의
- routes.py → 라우터, 컨트롤러 (API 엔드포인트)
- services.py → 비즈니스 로직 처리
- schemas.py → API 처리 repository.py -> db연결
진입점. 여기에 router 선언
디버깅 코드 / 에러 코드 터미널에서 볼 수 있도록 도와주는 모듈입니다.
(오류 추적하기 편리해요)
우리 엔드포인트
localhost:8000/api/v1
으로 고정했어요.
ex) http://127.0.0.1:8000/api/v1/test-db
그래서 router 추가 시 prefix 항상 넣어줘야 함.
app.include_router(rank_router, prefix="/api/v1")