[python] SQLAlchemy에서 날짜 및 시간 처리 방법

SQLAlchemy는 파이썬에서 데이터베이스와 상호 작용하기 위한 강력한 도구입니다. 날짜 및 시간과 관련된 데이터를 처리하는 방법에 대해 알아보겠습니다.

1. datetime 모듈을 사용하여 날짜 및 시간 생성

SQLAlchemy는 파이썬의 datetime 모듈과 통합되어 있어 날짜 및 시간을 처리할 때 datetime 모듈을 사용할 수 있습니다. 다음은 datetime 모듈을 사용하여 날짜와 시간을 생성하는 예제입니다.

from datetime import datetime

now = datetime.now()  # 현재 날짜 및 시간 가져오기
today = datetime.today()  # 현재 날짜 가져오기

2. datetime 객체를 사용하여 데이터베이스에 날짜 및 시간 저장

SQLAlchemy에서는 datetime 모듈을 사용하여 생성된 datetime 객체를 데이터베이스에 저장할 수 있습니다. datetime 객체를 데이터베이스에 저장하려면 해당 필드의 타입을 DateTime으로 정의해야 합니다. 다음은 SQLAlchemy 모델에서 datetime 필드를 정의하는 예제입니다.

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

Base = declarative_base()

class MyModel(Base):
    __tablename__ = 'my_table'
    created_at = Column(DateTime, default=datetime.now)

위의 예제에서 created_at 필드는 현재 날짜 및 시간으로 초기화되며, 이 값을 데이터베이스에 저장할 수 있습니다.

3. 필터링 및 정렬 기준으로 날짜 및 시간 사용

SQLAlchemy는 필터링(filtering) 및 정렬(sorting) 작업을 수행할 때도 datetime 객체를 사용할 수 있습니다. 예를 들어, 특정 날짜 및 시간 이후에 생성된 레코드를 가져오거나, 최신 날짜 순으로 정렬된 레코드를 가져올 수 있습니다.

from sqlalchemy import func

# 특정 날짜 이후에 생성된 레코드 가져오기
records = session.query(MyModel).filter(MyModel.created_at > datetime(2022, 1, 1)).all()

# 최신 날짜 순으로 정렬된 레코드 가져오기
records = session.query(MyModel).order_by(MyModel.created_at.desc()).all()

위의 예제에서는 filter()order_by() 메서드를 사용하여 datetime 객체를 활용하여 필터링 및 정렬을 수행하는 방법을 보여줍니다.

4. 날짜 및 시간 형식 변환

SQLAlchemy는 datetime 객체를 원하는 형식의 문자열로 변환할 수 있는 기능을 제공합니다. strftime() 메서드를 사용하면 datetime 객체를 원하는 형식의 문자열로 변환할 수 있습니다.

formatted_date = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(formatted_date)  # 예: 2022-12-31 23:59:59

위의 예제에서는 %Y-%m-%d %H:%M:%S와 같은 형식 문자열을 사용하여 날짜와 시간을 원하는 형태로 변환합니다.

마무리

SQLAlchemy를 사용하면 날짜 및 시간을 쉽게 처리할 수 있습니다. 위에서 설명한 방법을 활용하여 애플리케이션에서 날짜 및 시간 데이터를 다루는데 도움이 되길 바랍니다. SQLAlchemy의 공식 문서 및 예제 코드도 참고해보세요.

참고 자료