Полка - добавление нового значения - PullRequest
0 голосов
/ 12 ноября 2019

Вот так выглядит моя БД в полке

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

У меня есть этот код, который работает для добавления нового значения

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

Но по какой-то причине, когда я внедряю полку,это не работаетЧто-то не так с моим кодом или полкой?

Кстати, это код, который я использую для открытия БД

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

1 Ответ

1 голос
/ 12 ноября 2019

Проблема в том, что shelve не знает, когда переменные в нем внутренне видоизменены. Он только отслеживает модификации на полке своего (h) эльфа. Вам придется снять с полки объект, изменить его, а затем переназначить для сохранения изменений.

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