본문 바로가기
프로젝트 일지/분모자

FastAPI: 데이터베이스 연결의 이해

by 데브겸 2023. 6. 23.
본 글은 "FastAPI를 사용한 파이썬 웹 개발" 내용의 일부를 토대로 정리한 글입니다.

 

SQL과 애플리케이션 코드를 연동하기 위해선 SQLModel 라이브러리를 설치해야 한다. SQLModel 라이브러리는 FastAPI 개발자가 만들었으며, pydantic과 SQLAlchemy를 기반으로 한다.

 

 

테이블

테이블은 데이터베이스에 저장된 데이터를 가지고 있는 객체. SQLModel을 사용해서 테이블을 생성하려면 테이블 모델 클래스를 먼저 정의해야 함. pydantic 모델처럼 테이블을 정의하지만, SQLModel의 서브 클래스로 정의해야 함. 클래스 정의는 table이란 설정 변수를 갖는데, 이를 통해 해당 클래스가 SQLModel 테이블이라는 것을 인식할 수 있음. 모델 클래스 안에 정의된 변수는 따로 지정하지 않으면 기본 필드로 설정되고, 만약 필드 특성을 지정하고 싶다면 Field() 함수를 사용.

 

class Event(SQLModel, table=True):
    id: Optional[int] = Field(default=None, primary_key=True)
    title: str
    image: str
    description: str

 

 

로우

로우 추가는 테이블 인스턴스를 만들고 -> 그 인스턴스의 변수에 원하는 데이터를 할당

new_event = Event(title="test",
                  image="src/fastapi,png",
                  description="test")

 

그 후 세션(session) 클래스를 사용해서 데이터베이스 트랜잭션을 만들기

with Session(engine) as session:
    session.add(new_event)
    session.commit()

 

 

세션

세션 객체는 코드와 데이터베이스 사이에서 이루어지는 처리를 관리하며 주로 특정 처리를 데이터베이스에 적용하기 위해 사용됨. Session 클래스는 SQL 엔진의 인스턴스를 인수로 사용.

 

  • add(): 처리 대기 중인 데이터베이스 객체를 메모리에 추가한다. 위 예시 코드에서 new_event 객체는 세션 메모리에 추가되고 commit() 메서드에 의해 데이터베이스에 커밋될때까지 대기
  • commit(): 현재 세션에 있는 트랜잭션을 모두 정리한다
  • get(): 데이터베이스에서 단일 로우를 추출한다. 모델과 문서 ID를 인수로 사용

 

 

'프로젝트 일지 > 분모자' 카테고리의 다른 글

MLflow - Tracking Servers  (0) 2023.07.23
MLflow - Tracking using CLI  (0) 2023.03.13
MLflow - MLflow 개요 & Tracking 기초 (with python)  (2) 2023.03.07