Python에서 pymongo 라이브러리를 사용하면 MongoDB 데이터베이스에 손쉽게 연결하여 문서를 삽입, 수정, 삭제할 수 있습니다. 특히 pymongo는 Python의 datetime 객체를 기본적으로 지원하기 때문에, 날짜를 저장하기 위해 별도의 변환 작업을 할 필요가 없습니다.
기본 예제 코드
아래 예제는 MongoDB에 연결한 후, 현재 UTC 시간을 담은 문서를 컬렉션에 삽입하는 과정을 보여줍니다.
from pymongo import MongoClient
import datetime
# 기본 포트와 호스트로 MongoDB에 연결 시도
client = MongoClient()
db = client.test_database
# objects 컬렉션에 딕셔너리 형태의 문서 삽입
result = db.objects.insert_one({"last_modified": datetime.datetime.utcnow()})
print("객체가 성공적으로 삽입되었습니다!")실행 결과
객체가 성공적으로 삽입되었습니다!
주의 사항: utcnow() vs now()
날짜를 저장할 때는 반드시 datetime.datetime.utcnow()를 사용하는 것이 좋습니다. 이 함수는 현재 시간을 UTC(협정 세계시) 기준으로 반환합니다.
반면 datetime.datetime.now()는 서버가 위치한 현지 시간을 반환합니다. 현지 시간을 그대로 저장하면 시간대(timezone)가 다른 환경에서 데이터를 조회하거나 여러 서버 간에 시간을 비교할 때 오류가 발생하기 쉽습니다.
추가 팁: timezone-aware datetime 사용
Python 3.12 이후에는 datetime.utcnow()가 deprecated(사용 중단 권고) 상태이므로, 가능하다면 아래와 같이 타임존 정보를 포함한 객체를 사용하는 것이 더 안전합니다.
from datetime import datetime, timezone
result = db.objects.insert_one({
"last_modified": datetime.now(timezone.utc)
})타임존 정보가 포함된 datetime 객체를 저장하면 MongoDB에서도 시간대 변환 없이 일관된 시간 데이터를 유지할 수 있습니다.