2
我正在研究一個項目,其中有大量的對象被序列化並使用pickle
/cPickle
存儲到磁盤。Pickled Object Versioning
隨着項目的進展(在發佈給現場客戶之後),將來的功能/修復很可能會要求我們更改一些持久對象的簽名。這可能是字段的添加,字段的刪除,或者甚至只是改變一個數據上的不變量。
是否有一種標準方法來標記將被醃製爲具有特定版本的對象(如Java中的serialVersionUID
)?基本上,如果我恢復Foo版本234的實例,但當前代碼是236,我想在unpickle上收到一些通知。我應該繼續推出自己的解決方案(可能是PITA)。
感謝
是的,這是我認爲我們將要採取的方向。 我想我可能高估了添加和檢查這些數據所需的工作量。既然我們在一個地方恢復了我們所有的保存狀態,添加了我們需要的任何邏輯(處理未版本化的對象或之前未版本化的對象,現在應該不會太糟糕)。 雖然我會ping社區,看看pickle是否提供了這種行爲,並且我正在重新發明輪子。 – 2010-03-02 19:57:01