为了持久性,我正在使用 ZODB 存储一些存在于内存中的数据。如果内存中数据的服务每次崩溃,重新启动将从 ZODB 加载数据,而不是查询 MySQL 数据库中的数千行。
似乎每次我将 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。
我在这里做错了吗?