MongoEngine은 Python에서 MongoDB와 상호 작용하기 위한 객체 문서 매핑 (ODM) 라이브러리입니다. MongoDB는 NoSQL 데이터베이스로, 다양한 형식의 데이터를 저장할 수 있습니다. 이 글에서는 MongoEngine을 사용하여 다양한 데이터 형식을 변환하고 처리하는 방법에 대해 알아보겠습니다.
1. 문자열 변환
문자열로 변환하기
MongoEngine은 str
메소드를 통해 객체를 문자열로 변환할 수 있습니다. 예를 들어, Person
클래스의 인스턴스를 문자열로 변환해보겠습니다.
class Person(Document):
name = StringField()
age = IntField()
person = Person(name="John", age=30)
person_str = str(person)
print(person_str)
출력 결과:
<Person: {'name': 'John', 'age': 30}>
문자열에서 생성하기
MongoEngine에서 제공하는 from_json
메소드를 통해 JSON 문자열을 기반으로 객체를 생성할 수 있습니다. 예를 들어, 다음과 같이 JSON 문자열을 사용하여 Person
객체를 생성해보겠습니다.
person_json = '{"name": "John", "age": 30}'
person = Person.from_json(person_json)
print(person.name)
print(person.age)
출력 결과:
John
30
2. 날짜 및 시간 변환
MongoDB에서는 datetime
형식을 사용하여 날짜 및 시간 값을 저장합니다. MongoEngine에서는 이를 쉽게 처리할 수 있습니다.
날짜 및 시간으로 변환하기
datetime
모듈의 datetime
클래스를 사용하여 날짜 및 시간 객체를 생성한 뒤, 이를 필드에 할당할 수 있습니다. 예를 들어, Event
클래스에 start_time
필드를 추가해서 이를 처리해보겠습니다.
from datetime import datetime
class Event(Document):
title = StringField()
start_time = DateTimeField()
event = Event(title="New Year Party", start_time=datetime(2023, 1, 1, 20, 0, 0))
event.save()
문자열로 변환하기
날짜 및 시간 객체를 문자열로 변환할 때는 strftime
메소드를 사용합니다. 예를 들어, Event
객체의 start_time
을 문자열로 변환해보겠습니다.
event = Event.objects.first()
start_time_str = event.start_time.strftime("%Y-%m-%d %H:%M:%S")
print(start_time_str)
출력 결과:
2023-01-01 20:00:00
문자열에서 생성하기
문자열을 날짜 및 시간 객체로 변환할 때는 datetime.strptime
함수를 사용합니다. 예를 들어, 다음과 같이 문자열을 사용하여 start_time
값을 업데이트해보겠습니다.
event = Event.objects.first()
start_time_str = "2024-02-01 19:30:00"
event.start_time = datetime.strptime(start_time_str, "%Y-%m-%d %H:%M:%S")
event.save()
3. 리스트 및 딕셔너리 변환
MongoEngine은 ListField
와 DictField
를 사용하여 리스트와 딕셔너리 형식의 데이터를 처리할 수 있습니다.
리스트로 변환하기
ListField
를 사용하여 리스트 데이터를 처리할 수 있습니다. 예를 들어, Car
클래스에 owners
필드를 추가해 보겠습니다.
class Car(Document):
model = StringField()
owners = ListField(StringField())
car = Car(model="Tesla", owners=["John", "Alice"])
car.save()
딕셔너리로 변환하기
DictField
를 사용하여 딕셔너리 데이터를 처리할 수 있습니다. 예를 들어, Product
클래스에 properties
필드를 추가해 보겠습니다.
class Product(Document):
name = StringField()
properties = DictField()
product = Product(name="Laptop", properties={"brand": "Dell", "memory": "8GB"})
product.save()
결론
이 글에서는 MongoEngine을 사용하여 다양한 데이터 형식을 변환하고 처리하는 방법을 알아보았습니다. 문자열, 날짜 및 시간, 리스트, 딕셔너리 등 다양한 형식의 데이터를 MongoDB에 저장하고 검색하고 처리할 수 있습니다.