데이터베이스 모델 생성
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에게 이러한 각 모델에 대해 데이터베이스에서 사용할 테이블 이름을 알려줍니다 .
이제 모든 모델(클래스) 속성을 만듭니다.
이러한 각 속성은 해당 데이터베이스 테이블의 열을 나타냅니다.
Column
SQLAlchemy에서 기본값으로 사용 합니다.
그리고 데이터베이스의 유형을 정의 하는 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