>백엔드 개발 >파이썬 튜토리얼 >FastAPI에서 데이터 조작을 위해 ORM 라이브러리를 사용하는 방법

FastAPI에서 데이터 조작을 위해 ORM 라이브러리를 사용하는 방법

王林
王林원래의
2023-07-30 17:00:412814검색

FastAPI에서 데이터 작업을 위해 ORM 라이브러리를 사용하는 방법

소개:
FastAPI는 Python을 기반으로 한 최신 웹 프레임워크입니다. 디자인은 Starlette 및 Pydantic에서 영감을 얻었으며 특히 빠르게 구축하는 데 적합합니다. 확장 가능하고 성능이 뛰어난 RESTful API 서비스입니다. FastAPI에서는 ORM(Object Relational Mapping) 라이브러리의 도움으로 데이터베이스 작업을 보다 편리하게 수행할 수 있습니다. 이 기사에서는 FastAPI에서 데이터 조작을 위해 ORM 라이브러리를 사용하는 방법을 안내하고 몇 가지 코드 예제를 제공합니다.

1. ORM 라이브러리 소개
ORM(Object Relational Mapping)은 데이터베이스의 데이터를 객체로 매핑하는 기술입니다. ORM 라이브러리를 사용하면 개발자는 SQL 문을 직접 작성하지 않고도 객체 모델을 정의하여 데이터베이스를 운영할 수 있습니다. FastAPI에서 일반적으로 사용되는 ORM 라이브러리에는 SQLAlchemy, Peewee 등이 있습니다. 이 문서에서는 설명을 위해 SQLAlchemy를 예로 사용합니다.

2. SQLAlchemy 설치 및 구성
SQLAlchemy를 사용하기 전에 먼저 SQLAlchemy 라이브러리를 설치해야 합니다. 다음 명령을 통해 설치할 수 있습니다:

pip install sqlalchemy

설치가 완료된 후 데이터베이스의 연결 구성을 설정해야 합니다. FastAPI에서는 main.py 파일에 다음 코드를 추가할 수 있습니다.

from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base, sessionmaker

SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db"
engine = create_engine(SQLALCHEMY_DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

Base = declarative_base()

위 코드에서는 SQLite 데이터베이스를 생성하고 데이터베이스 세션 생성을 위해 SessionLocal을 정의했습니다. SQLALCHEMY_DATABASE_URL은 데이터베이스 연결의 URL입니다.

3. 데이터 모델 정의
데이터 작업에 ORM을 사용하기 전에 데이터 모델을 정의해야 합니다. 데이터 모델은 models.py 파일에서 정의할 수 있습니다. 샘플 사용자 모델을 예로 들면 다음과 같습니다.

from sqlalchemy import Column, Integer, String
from database import Base

class User(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True, index=True)
    name = Column(String(50), unique=True, index=True)
    email = Column(String(50), unique=True, index=True)
    password = Column(String(100))

위 코드에서는 User라는 데이터 모델을 정의하고 데이터 테이블 이름을 "users"로 지정합니다. 데이터 모델에서는 각 필드의 유형 등을 정의할 수 있습니다.

4. 데이터 테이블 생성
데이터 작업에 ORM을 사용하기 전에 해당 데이터베이스 테이블을 생성해야 합니다. main.py 파일에 다음 코드를 추가할 수 있습니다:

Base.metadata.create_all(bind=engine)

위 코드는 데이터베이스에 정의된 모든 데이터 모델에 해당하는 테이블을 생성합니다.

5. 데이터 작업 예제
사용자 모델을 예로 들어 몇 가지 일반적인 데이터 작업 예제를 제공합니다.

  1. 모든 사용자 쿼리

    from sqlalchemy.orm import Session
    from . import models
    
    def get_users(db: Session):
     return db.query(models.User).all()

    위 코드에서는 모든 사용자 데이터를 쿼리하여 반환합니다.

  2. 단일 사용자 쿼리

    from sqlalchemy.orm import Session
    from . import models
    
    def get_user_by_id(db: Session, user_id: int):
     return db.query(models.User).filter(models.User.id == user_id).first()

    위 코드에서는 사용자 ID별로 단일 사용자 데이터를 쿼리하여 반환합니다.

  3. 사용자 생성

    from sqlalchemy.orm import Session
    from . import models, schemas
    
    def create_user(db: Session, user: schemas.UserCreate):
     hashed_password = hashlib.sha256(user.password.encode()).hexdigest()
     db_user = models.User(name=user.name, email=user.email, password=hashed_password)
     db.add(db_user)
     db.commit()
     db.refresh(db_user)
     return db_user

    위 코드에서는 들어오는 사용자 데이터를 데이터베이스에 저장하고 반환합니다.

  4. Update user

    from sqlalchemy.orm import Session
    from . import models, schemas
    
    def update_user(db: Session, user_id: int, user: schemas.UserUpdate):
     db_user = db.query(models.User).filter(models.User.id == user_id).first()
     if user.name:
         db_user.name = user.name
     if user.email:
         db_user.email = user.email
     if user.password:
         db_user.password = hashlib.sha256(user.password.encode()).hexdigest()
     db.commit()
     db.refresh(db_user)
     return db_user

    위 코드에서는 들어오는 업데이트 데이터를 사용자 ID를 통해 데이터베이스에 저장합니다.

  5. 사용자 삭제

    from sqlalchemy.orm import Session
    from . import models
    
    def delete_user(db: Session, user_id: int):
     db_user = db.query(models.User).filter(models.User.id == user_id).first()
     db.delete(db_user)
     db.commit()
     return {'message': f"User {user_id} deleted successfully"}

    위 코드에서는 사용자 ID별로 데이터베이스에서 사용자 데이터를 삭제합니다.

결론:
위의 코드 예제를 통해 FastAPI에서 데이터 작업에 ORM 라이브러리를 사용하는 것이 비교적 간단하다는 것을 알 수 있습니다. ORM 라이브러리의 도움으로 SQL 문을 직접 작성할 필요 없이 객체 모델을 통해 데이터베이스 작업을 수행할 수 있어 코드가 더욱 간결해지고 읽기 쉬워졌습니다. 이 기사가 FastAPI 프로젝트의 데이터 작업에 ORM 라이브러리를 사용하는 데 도움이 되기를 바랍니다.

위 내용은 FastAPI에서 데이터 조작을 위해 ORM 라이브러리를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.