我正在使用ZODB來存儲一些存儲在內存中的數據以實現持久性。如果內存中的數據服務每次崩潰,重新啓動將從ZODB加載數據,而不是查詢MySQL數據庫中成千上萬行的數據。Python:ZODB文件大小不斷增加 - 沒有更新?
似乎每次我保存時,說500K的數據到我的數據庫文件,我的.fs文件增長500K,而不是停留在500K。作爲一個例子:
storage = FileStorage.FileStorage(MY_PATH)
db = DB(storage)
connection = db.open()
root = connection.root()
if not root.has_key('data_db'):
root['data_db'] = OOBTree()
mydictionary = {'some dictionary with 500K of data'}
root['data_db'] = mydictionary
root._p_changed = 1
transaction.commit()
transaction.abort()
connection.close()
db.close()
storage.close()
我想不斷用當前值mydictionary覆蓋root ['data_db']中的數據。當我打印len(root ['data_db'])時,它始終從mydictionary中打印出正確數量的項目,但每次運行代碼時(具有相同的確切數據),文件大小都會增加數據大小,在此情況下爲500K。
我在這裏做錯了什麼?
是否還有另一種存儲系統(可能是python原生的),你可能會推薦,因爲我想要做的就是每次覆蓋存儲的數據? Pickly會爲我工作,但是當我擁有一大組數據(字典中的1M +條目)時,交易顯得很慢 – sberry 2009-08-26 15:58:00
像Mark說的那樣,我會考慮sqlite。 – 2009-08-26 19:41:32