가상환경 만들고 진입하기
├── main.py
├── database.py
├── models.py
├── domain
│ ├── answer
│ ├── question
│ └── user
└── frontend
목표 : 질문과 답변을 작성하는 게시판 제작
디비를 사용하기 위한 변수, 함수 등을 정의하고 접속할 디비의 주소와 사용자, 비밀번호 등을 관리함
각 도메인은 API를 생성하기 위해 라우터 파일, 데이터베이스 처리 파일, 입출력 관리 파일들이 필요함
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 파일 수정