가상환경 만들고 진입하기

스크린샷 2024-05-08 오후 10.34.55.png

프로젝트 구조

├── main.py 
├── database.py
├── models.py
├── domain
│   ├── answer
│   ├── question
│   └── user
└── frontend

목표 : 질문과 답변을 작성하는 게시판 제작

database.py

디비를 사용하기 위한 변수, 함수 등을 정의하고 접속할 디비의 주소와 사용자, 비밀번호 등을 관리함

각 도메인은 API를 생성하기 위해 라우터 파일, 데이터베이스 처리 파일, 입출력 관리 파일들이 필요함

SQLAlchemy ORM 라이브러리 사용하기

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

#데이터베이스 접속 주소
#SQLite는 소규모 프로젝트에서 사용하는 가벼운 파일 기반 db
SQLALCHEMY_DATABASE_URL = 'sqlite:///./myapi.db'

#create_engine() => 커넥션 풀 생성
#커넥션 풀 : db에 접속하는 객체를 일정 갯수만큼 만들어 높고 돌려가며 사용하는 것
# 세션 수 제어, 접속 소요 시간 감소 목적
engine = create_engine(
    SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)

#autocommit=False여야 commit 사인, rollback 사용 가능
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

alembic은 SQLAlchemy로 작성한 모델을 기반으로 데이터베이스를 쉽게 관리할 수 있게 도와주는 도구

alembic 설치 및 초기화 → env.py 파일 수정

스크린샷 2024-05-08 오후 10.17.11.png