FastAPI.5 Database Model 생성

BodeulMaNN·2022년 12월 9일
0

FastAPI

목록 보기
5/8

데이터베이스 모델 생성

sql_app/models.py
database``database.py

from sqlalchemy import Boolean, Column, ForeignKey, Integer, String
from sqlalchemy.orm import relationship

from .database import Base


class User(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True, index=True)
    email = Column(String, unique=True, index=True)
    hashed_password = Column(String)
    is_active = Column(Boolean, default=True)

    items = relationship("Item", back_populates="owner")


class Item(Base):
    __tablename__ = "items"

    id = Column(Integer, primary_key=True, index=True)
    title = Column(String, index=True)
    description = Column(String, index=True)
    owner_id = Column(Integer, ForeignKey("users.id"))

    owner = relationship("User", back_populates="items")

__tablename__속성은 SQLAlchemy에게 이러한 각 모델에 대해 데이터베이스에서 사용할 테이블 이름을 알려줍니다 .

모델 속성/ 열 생성

이제 모든 모델(클래스) 속성을 만듭니다.
이러한 각 속성은 해당 데이터베이스 테이블의 열을 나타냅니다.
ColumnSQLAlchemy에서 기본값으로 사용 합니다.
그리고 데이터베이스의 유형을 정의 하는 SQLAlchemy 클래스 "유형"을 Integer인수 로 전달합니다.String``Boolean

from sqlalchemy import Boolean, Column, ForeignKey, Integer, String
from sqlalchemy.orm import relationship

from .database import Base


class User(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True, index=True)
    email = Column(String, unique=True, index=True)
    hashed_password = Column(String)
    is_active = Column(Boolean, default=True)

    items = relationship("Item", back_populates="owner")


class Item(Base):
    __tablename__ = "items"

    id = Column(Integer, primary_key=True, index=True)
    title = Column(String, index=True)
    description = Column(String, index=True)
    owner_id = Column(Integer, ForeignKey("users.id"))

    owner = relationship("User", back_populates="items")

relationship은 이것과 관련된 다른 테이블의 값을 포함하는 속성이다.

위와 같이 에서 속성 items에 액세스할 때 테이블의 이 레코드를 가리키는 외래 키가 있는 SQLAlchemy 모델 목록 (테이블에서)이 있습니다 . User``my_user.items``Item``items``users
에 액세스 하면 SQLAlchemy가 실제로 이동하여 테이블 my_user.items의 데이터베이스에서 항목을 가져와 여기에 채웁니다.items
그리고 의 속성 owner에 액세스할 때 테이블 의 SQLAlchemy 모델 Item이 포함됩니다 . 테이블 에서 가져올 레코드를 알기 위해 외래 키와 함께 속성/열을 사용 합니다.User``users``owner_id``users

profile
반갑습니다

0개의 댓글