2011-07-06 59 views
0

我正在嘗試爲我的模型創建數據版本控制的通用方法。我想用新的BackupSomeModel動態創建類SomeModel(db.Model)的新備份。動態創建具有現有模型類的所有相同屬性的新類型

你有關於如何在Python中做到這一點的提示?或者,您可能對如何在GAE中版本數據有一個總體思路? PS:我試圖擺脫in here描述的解決方案。

+1

爲什麼你需要複製模型定義?你究竟想達到什麼目的?有可能有更好的解決方案。 –

+0

我需要90%用戶數據的更改日誌。這是爲了遵守政策,它很少用於閱讀,我希望與其原始類別分開存放。 –

+0

到目前爲止,我有一個Expando模型類,我將所有數據複製到(需要一些數據清理,例如數據和時間需要存儲爲日期時間),但是id喜歡每個模型都有其備份類型,而不是我的所有數據只有一種備份類型。 –

回答

1

做到這一點是這樣的最簡單的方法:

class BackupSomeModel(SomeModel): pass 

如果要保留審計日誌,但是,在一個單獨的存儲種類系列化協議緩衝區可能是一個更好的辦法。我建議有一種'AuditLog'類型,其實體是他們審覈的記錄的子實體,包含每次修改後數據的序列化PB。

+0

基於PB的解決方案很有趣,我會試一試。我猜即使我需要顯示以前的版本,我仍然可以在運行中反序列化它們,並且將它們從數據存儲中拉出來的代價幾乎相同,對嗎? –

+1

@WooYek正確。它會稍高一點,但我認爲它不會是一個日常的關鍵路徑操作。 –

相關問題