我正在使用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