gpt4 book ai didi

Python:ZODB 文件大小不断增长 - 未更新?

转载 作者:行者123 更新时间:2023-12-01 00:00:34 26 4
gpt4 key购买 nike

为了持久化,我使用 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。

我在这里做错了什么吗?

最佳答案

当ZODB中的数据发生变化时,它会被追加到文件末尾。旧数据留在那里。为了减少文件大小,您需要手动“打包”数据库。

Google 提出了 this mailing list post .

关于Python:ZODB 文件大小不断增长 - 未更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1335615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com