[python] SQLAlchemy와 FastAPI 웹 프레임워크 연동 방법

FastAPI는 Python 기반의 빠르고 현대적인 웹 프레임워크입니다. SQLAlchemy는 Python에서 사용하는 ORM(Object-Relational Mapping) 도구로, 데이터베이스와의 상호작용을 단순화시켜줍니다. 이번 포스트에서는 SQLAlchemy와 FastAPI를 함께 사용하는 방법을 알아보겠습니다.

1. SQLAlchemy 설치

먼저 SQLAlchemy를 설치해야 합니다. pip를 사용하여 다음 명령어를 실행해주세요.

pip install SQLAlchemy

2. 데이터베이스 연결 설정

SQLAlchemy를 사용하기 위해 데이터베이스 연결을 설정해야 합니다. 예를 들어, PostgreSQL 데이터베이스에 연결하려면 다음과 같이 코드를 작성할 수 있습니다.

from sqlalchemy import create_engine

database_url = "postgresql://username:password@host:port/database"
engine = create_engine(database_url)

# 아래에서 engine 변수를 사용하여 데이터베이스 작업을 수행할 수 있습니다.

위 코드에서 username, password, host, port, database는 실제 데이터베이스에 맞게 설정해야 합니다.

3. 모델 정의

SQLAlchemy를 사용하여 데이터베이스 테이블에 대한 모델을 정의할 수 있습니다. 예를 들어, users 테이블에 대한 모델을 정의하려면 다음과 같이 코드를 작성할 수 있습니다.

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True)
    name = Column(String)
    email = Column(String)

위 코드에서 User 클래스를 정의하고 users 테이블과 매핑될 수 있도록 __tablename__ 속성을 설정합니다. 그리고 각 열을 Column 객체로 정의합니다.

4. 데이터베이스 작업 수행

FastAPI에서 SQLAlchemy를 사용하기 위해 Dependency로 설정할 수 있습니다. 아래는 사용자 데이터를 조회하는 예시입니다.

from fastapi import Depends, FastAPI
from sqlalchemy.orm import Session

app = FastAPI()

@app.get("/users")
def get_users(db: Session = Depends(get_db)):
    users = db.query(User).all()
    return users

위 코드에서 get_users 함수에서 db: Session = Depends(get_db)Session 객체를 가져옵니다. get_db 함수는 SQLAlchemy 연결을 반환하는 함수입니다. 위 예시에서는 SQLAlchemy의 query 함수를 사용하여 User 모델에 대해 모든 데이터를 조회합니다.

5. 마무리

이제 SQLAlchemy와 FastAPI를 함께 사용하는 방법을 알게 되었습니다. SQLAlchemy를 사용하여 데이터베이스 작업을 수행하고, FastAPI를 활용하여 웹 애플리케이션을 빠르고 효율적으로 개발할 수 있습니다.


참고 문서: