검색
검색
공개 노트 검색
회원가입로그인
FastAPI와 파이썬: 쉽고 빠르게 배우는 웹 개발

FastAPI와 데이터베이스 통합

데이터베이스와 FastAPI: 통합하기

이번 장에서는 FastAPI와 데이터베이스를 통합하여 강력한 웹 애플리케이션을 개발하는 방법을 다루겠습니다. 데이터베이스는 모든 복잡한 애플리케이션에서 중요한 역할을 합니다. 다음 내용을 통해 FastAPI가 데이터베이스와 어떻게 상호작용하는지 배우고 실제 프로젝트에 적용할 수 있는 기술을 얻으세요.

데이터베이스 선택: SQLite와 SQLModel

FastAPI는 특정 데이터베이스를 강제하지 않습니다. 따라서 개발자는 프로젝트의 요구 사항에 맞는 데이터베이스를 선택할 수 있습니다. 이번 예제에서는 SQLite와 SQLModel을 사용합니다. SQLite는 가벼운 데이터베이스로, 설정이 간단하며 테스트나 소규모 프로젝트에 적합합니다. SQLModel은 SQLAlchemy와 Pydantic을 기반으로 하여 FastAPI와 잘 맞는 통합 라이브러리입니다.

FastAPI에서 데이터베이스 설정하기

데이터베이스를 사용하려면 먼저 관련 패키지를 설치해야 합니다. 터미널에서 다음 명령어를 실행하여 필요 라이브러리를 설치하세요.

pip install sqlmodel sqlite

이제 FastAPI 애플리케이션에서 데이터베이스 연결을 설정해 봅시다.

from sqlmodel import SQLModel, create_engine
from fastapi import FastAPI

engine = create_engine("sqlite:///./database.db")

app = FastAPI()

@app.on_event("startup")
def on_startup():
    SQLModel.metadata.create_all(engine)

위 코드에서는 SQLite 데이터베이스를 생성하고 애플리케이션 시작 시 스키마를 생성하도록 설정합니다.

모델 생성 및 데이터 처리

SQLModel을 사용하여 데이터베이스 모델을 정의할 수 있습니다. 예를 들어, 다음과 같이 사용자를 나타내는 모델을 만들어 봅시다.

from sqlmodel import SQLModel, Field

class User(SQLModel, table=True):
    id: int = Field(primary_key=True)
    name: str
    age: int

그런 다음, FastAPI 경로를 추가하여 사용자를 생성하고 조회하는 기능을 구현할 수 있습니다.

from sqlmodel import Session, select
from fastapi import Depends

# 데이터베이스 세션 설정
def get_session():
    with Session(engine) as session:
        yield session

@app.post("/users/")
def create_user(user: User, session: Session = Depends(get_session)):
    session.add(user)
    session.commit()
    return user

@app.get("/users/{user_id}")
def read_user(user_id: int, session: Session = Depends(get_session)):
    user = session.exec(select(User).where(User.id == user_id)).first()
    return user

결론

FastAPI는 데이터베이스와의 통합을 원활하게 할 수 있는 강력한 도구와 라이브러리를 제공합니다. 이 장에서 배운 것을 바탕으로, 데이터베이스와 상호작용하는 애플리케이션을 개발해 보세요. 다음 장에서는 더 복잡한 사례와 확장 기능을 살펴보겠습니다.

참고 자료


공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기