2013-02-18 34 views
0

我正在創建一個python程序來與許多不同類型的概念對象進行交互。例如,它可能代表一個人,在這種情況下,它會是這樣的:如何實現與任意字段/任意數量的字段的數據庫兼容python對象

type = "person" 
name = "Bono" 
profession = "performer" 
nationality = "Irish" 

但是,它也可能代表一本雜誌,在這種情況下,它會是這個樣子

type = "publication" 
name = "Rolling Stone" 
editor = ("Jann Wenner" , "Will Dana") 
founding_year = "1967" 

除了類型和名稱之外,所有其他字段都是可選的。這是一個棘手的問題 - 它是爲刮板編寫的代碼的一部分,所有其他字段都是即時確定/創建的。換句話說,我們不知道我們需要一個「編輯器」字段,直到刮板將「編輯器」回傳給代碼

理想情況下,這將作爲一個Python列表的字典被相當直接地實現。但是,我們將處理大量記錄 -​​ 太多記錄不能同時記錄。因此,我想擁有數據庫兼容性 - 就像Django的MVC一樣,所以我們可以輕鬆查詢記錄集。

我考慮過的一個選擇是Django fieldsets,但它看起來像仍處於測試階段,我擔心我會丟失一些通用性 - 理想情況下,我可以存儲任何數據類型與一個鍵,(value_list)對。我很樂意就字段集或示例代碼的可行性提供任何意見。

我考慮過的另一個選擇是Django MVC和JSON的組合。在這種情況下,每個對象都有三列 - 類型,名稱和屬性。屬性應該是所有其他屬性的JSON序列化(或其他合適的酸洗方法),以便一旦擁有該對象,就可以重構它的屬性並查詢該集合。我會存儲像thisthis(鏈接)。用這種方法,我會失去輕鬆搜索字典中任何屬性的能力。

我非常感謝任何輸入或指導。如果有人知道類似的項目,我很想知道。

+1

這聽起來像一個像Mongo或Redis這樣的NoSQL後端的工作。甚至可以直接在python中使用基於文件的SQLite實例。你需要MVC的額外基礎架構,還是隻需要一個數據存儲? – 2013-02-18 02:09:15

回答

1

這似乎是使用NoSQL數據庫的絕好機會。像MongoDB這樣的東西不依賴於固定的模式,所以它可能適合你的場景。