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. 데이터 작업 예제
사용자 모델을 예로 들어 몇 가지 일반적인 데이터 작업 예제를 제공합니다.
모든 사용자 쿼리
from sqlalchemy.orm import Session from . import models def get_users(db: Session): return db.query(models.User).all()
위 코드에서는 모든 사용자 데이터를 쿼리하여 반환합니다.
단일 사용자 쿼리
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별로 단일 사용자 데이터를 쿼리하여 반환합니다.
사용자 생성
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
위 코드에서는 들어오는 사용자 데이터를 데이터베이스에 저장하고 반환합니다.
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를 통해 데이터베이스에 저장합니다.
사용자 삭제
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!