2014-07-22 71 views
0

夥計們, 我有以下類別:蟒蛇轉換對象轉換爲JSON MongoDB的

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

雖然使用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)。

2

你有多種選擇:

  1. 存儲用戶數據的字典,然後傾倒在成JSON。這是可行的,但我不推薦它。

  2. 使用ORM(對象關係映射器)將數據庫中的對象(如用戶)基本映射到表中。 Python的事實上的ORM是SQLAlchemy。不過,既然你提到了MongoDB,我建議看看mongokit