python将对象转换为json for mongodb

时间:2014-07-22 15:04:22

标签: python pymongo

民间,   我有以下课程:

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的正确方法?

由于

2 个答案:

答案 0 :(得分:2)

您有多种选择:

  1. 将用户数据存储为字典,然后转储到json中。这是可行的,但我不推荐它。

  2. 使用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。)