[python] SQLAlchemy에서 속성 제약 조건 설정 방법

SQLAlchemy는 Python에서 사용할 수 있는 인기있는 ORM(Object Relational Mapping) 라이브러리입니다. SQLAlchemy를 사용하면 데이터베이스 테이블과 상호작용하는 코드를 간단하게 작성할 수 있습니다. 이번 포스트에서는 SQLAlchemy에서 속성 제약 조건을 설정하는 방법에 대해 알아보겠습니다.

Unique 제약 조건 설정하기

특정 속성을 고유하게 유지하기 위해 Unique 제약 조건을 설정할 수 있습니다. 이는 중복된 값을 허용하지 않는 속성을 정의하는 데 사용됩니다. SQLAlchemy에서는 unique=True를 사용하여 Unique 제약 조건을 설정할 수 있습니다.

from sqlalchemy import Column, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    
    id = Column(Integer, primary_key=True)
    username = Column(String, unique=True)
    email = Column(String, unique=True)

위의 예제에서 usernameemail 속성은 중복된 값을 허용하지 않는 고유한 속성으로 정의되었습니다.

Not Null 제약 조건 설정하기

특정 속성이 Null 값을 허용하지 않도록 하려면 Not Null 제약 조건을 설정해야 합니다. SQLAlchemy에서는 nullable=False를 사용하여 Not Null 제약 조건을 설정할 수 있습니다.

from sqlalchemy import Column, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    
    id = Column(Integer, primary_key=True)
    username = Column(String, nullable=False)
    email = Column(String, nullable=False)

위의 예제에서 usernameemail 속성은 Null 값을 허용하지 않는 속성으로 정의되었습니다.

기본값 설정하기

특정 속성에 기본값을 설정하려면 default 매개변수를 사용하여 기본값을 지정해야 합니다. SQLAlchemy에서는 이를 편리하게 처리할 수 있습니다.

from sqlalchemy import Column, String, DateTime, func
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    
    id = Column(Integer, primary_key=True)
    username = Column(String, nullable=False)
    email = Column(String, nullable=False)
    created_at = Column(DateTime, default=func.now())

위의 예제에서 created_at 속성은 func.now()를 사용하여 현재 시간을 기본값으로 설정합니다.

이렇게 SQLAlchemy에서 속성 제약 조건을 설정할 수 있습니다. 데이터베이스 모델을 정의할 때 필요한 제약 조건을 간편하게 설정하여 데이터의 일관성과 무결성을 유지할 수 있습니다.

참고 자료