民间, 我有以下课程:
class User(object):
def __init__(self, name, bd, phone, address):
self.name = name
self.bd = bd
self.phone = phone
self.address = address
myUser = User(name, bd, phone, address)
现在我需要将myUser
存储为MongoDB中的对象。我应该使用jsondumps吗?什么是将此对象转换为pymongo的正确方法?
由于
答案 0 :(得分:2)
您有多种选择:
将用户数据存储为字典,然后转储到json中。这是可行的,但我不推荐它。
使用ORM(对象关系映射器)将对象(例如用户)基本映射到数据库中的表中。 Python的事实ORM是SQLAlchemy。但是,既然你提到了MongoDB,我建议看看mongokit。
答案 1 :(得分:2)
虽然使用ORM通常是一种很好的方法,但根据系统的复杂程度,可以更轻松地完成所有操作"手动"。
在您的情况下,可以简单地完成:
class User(object):
def __init__(self, name, bd, phone, address):
self.name = name
self.bd = bd
self.phone = phone
self.address = address
def to_document(self):
return dict(
name = self.name,
bd = self.bd,
phone = self.phone,
address = self.address,
)
@classmethod
def from_document(cls, doc):
return cls(
name = doc['name'],
bd = doc['bd'],
phone = doc['phone'],
address = doc['address'],
)
您也可以使用"快捷键"版本......
def to_document(self):
return self.__dict__
@classmethod
def from_document(cls, doc):
return cls(**doc)
...虽然IMO明确比隐含更好,但您几乎必须切换到"完整的手动版本"因为事情变得更复杂(例如,如果它是一个对象,你可能需要调用其中一个字段to_document
。)