搁置 - 附加一个新值

Shelve - Appending a new value

这是我的数据库在架中的样子

{"admin" : {"user1" : ["their info"]} }

我有这段代码可以附加一个新值

dict["admin"]["user2"] = ["their info]

但由于某种原因,当我实施搁置时,它不起作用。是我的代码有问题还是搁置了?

顺便说一句,这是我用来打开数据库的代码

a = shelve.open('user.db')

问题是shelve不知道里面的变量什么时候发生内部变异。它只跟踪对 shelf its(h)elf 的修改。 您必须取消搁置对象,修改它,然后重新分配它以保存更改。

shelf = shelve.open(...)
obj = shelf["admin"]   # <- unshelve
obj["user2"] = "info"  # <- mutate
shelf["admin"] = obj   # <- reshelve