您可能會嘗試klepto
,它提供了一個SQL數據庫的字典界面(使用sqlalchemy
)。如果您選擇將數據保存到mysql
,postgresql
或其他可用數據庫(除sqlite
之外),則可以讓兩個或更多人同時訪問數據或讓兩個線程/進程訪問數據庫表 - 並讓數據庫數據庫管理併發讀寫。使用klepto
與數據庫後端將在併發訪問下執行,以及您是否直接訪問數據庫。如果您不想使用數據庫後端,則klepto
也可以寫入磁盤 - 但寫入磁盤時可能會發生衝突 - 即使klepto
使用「寫入時複製,然後替換」策略在使用磁盤上的文件時最大限度地減少併發衝突。在使用文件(或目錄)後端時,由於策略klepto
用於保存對磁盤的寫入,因此仍會處理1-2-3的問題。此外,klepto
可以使用內存緩存層,以實現快速訪問,其中磁盤(或數據庫)後端的加載/轉儲按需執行,或者當內存中的緩存達到用戶確定的大小時執行。
具體來說:(1)兩者同時服務。 (2)如果一個用戶進行編輯,另一個用戶看到更改 - 但是如果第二個用戶正在使用內存中緩存層,則該更改可能會「延遲」。 (3)多個同時寫入不是問題,因爲klepto
讓NFS或sql數據庫處理「寫時複製,然後替換」更改。
爲klepto.archvives
字典接口處還在於提供LRU
緩存(和LFU
等)一個裝飾形式提供,所以如果你有一個正在生成/訪問數據,掛鉤存檔的功能是很容易的 - 您可以使用磁盤或數據庫後端進行記憶。
隨着klepto
,你可以選擇幾種不同的序列化方法來加密你的數據。你可以使用klepto
將數據強制轉換爲字符串,或使用散列算法(如md5
)或使用pickler(如json
,pickle
或dill
)。
您可以在此處獲得klepto
:https://github.com/uqfoundation/klepto