[파이썬] SQLAlchemy 데이터 타입 활용

SQLAlchemy는 Python에서 데이터베이스를 다루는 데 사용되는 강력하고 유연한 ORM(Object-Relational Mapping) 도구입니다. SQLAlchemy를 사용하여 데이터베이스 스키마를 정의할 때, 데이터 타입은 매우 중요한 역할을 합니다. 데이터 타입을 올바르게 정의하면 데이터베이스에 저장되는 데이터의 정확성과 성능을 향상시킬 수 있습니다.

SQLAlchemy의 주요 데이터 타입

SQLAlchemy는 다양한 데이터 타입을 제공하여 다양한 데이터 유형을 지원합니다.

1. Integer

Integer 데이터 타입은 정수 값을 저장하는 데 사용됩니다. 예를 들어, 사용자의 나이와 같은 정수 값을 저장할 때 유용합니다.

from sqlalchemy import Column, Integer

class User(Base):
    __tablename__ = 'users'
    
    id = Column(Integer, primary_key=True)
    age = Column(Integer)

2. String

String 데이터 타입은 문자열 값을 저장하는 데 사용됩니다. 예를 들어, 사용자의 이름과 같은 문자열 값을 저장할 때 유용합니다.

from sqlalchemy import Column, String

class User(Base):
    __tablename__ = 'users'
    
    id = Column(Integer, primary_key=True)
    name = Column(String(50))

3. Boolean

Boolean 데이터 타입은 참(True) 또는 거짓(False) 값을 저장하는 데 사용됩니다. 예를 들어, 사용자의 로그인 상태를 저장할 때 유용합니다.

from sqlalchemy import Column, Boolean

class User(Base):
    __tablename__ = 'users'
    
    id = Column(Integer, primary_key=True)
    is_active = Column(Boolean)

4. DateTime

DateTime 데이터 타입은 날짜와 시간 값을 저장하는 데 사용됩니다. 예를 들어, 블로그 글의 작성 일시를 저장할 때 유용합니다.

from sqlalchemy import Column, DateTime

class BlogPost(Base):
    __tablename__ = 'blog_posts'
    
    id = Column(Integer, primary_key=True)
    title = Column(String(100))
    content = Column(String)
    created_at = Column(DateTime)

데이터 타입 제약 조건

SQLAlchemy 데이터 타입에는 추가적으로 제약 조건을 정의할 수도 있습니다. 제약 조건은 특정한 조건을 만족하는 데이터만을 저장하도록 허용하며, 데이터베이스의 데이터 무결성을 보장합니다.

예를 들어, 아래 코드에서는 이메일 주소를 저장하는 email 필드에 unique=True 제약 조건을 추가하였습니다. 이로써 동일한 이메일 주소를 가진 사용자가 중복해서 저장되지 않도록 보장할 수 있습니다.

from sqlalchemy import Column, String

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

데이터 타입 및 제약 조건은 SQLAlchemy에서 다양한 옵션으로 사용할 수 있습니다. 이 문서에서는 몇 가지 예시를 들었지만, SQLAlchemy 문서를 참조하여 더 많은 옵션을 확인할 수 있습니다.

SQLAlchemy는 데이터베이스 작업을 쉽게 만들어주는 강력한 도구입니다. 데이터 타입을 올바르게 활용하면 데이터의 정확성과 성능을 최적화할 수 있습니다. SQLAlchemy 문서 및 예제를 참고하여 데이터 타입을 효과적으로 활용해보세요!