尝试将这些值存储在带有setdefult()的搁置文件中的嵌套字典中。有什么简单的方法吗?下面的代码似乎使值不可变,例如,最后一行无法将“price”值更改为25。
room_data = shelve.open("data")
room_data.setdefault("key", {"type": "Standard Single", "available": 5, "price": 50, "adults": 1, "children": 0})
room_data["key"]["price"] = 25我本来希望它能在搁置中运行,然后稍后再添加SQL,但现在可能更容易了解它。让我知道你的想法。谢谢。
发布于 2017-05-24 10:31:58
你必须设置writeback=True
room_data = shelve.open("data", writeback=True)然后在变异值之后调用room_data.sync():
room_data.setdefault("key", {"type": "Standard Single", "available": 5, "price": 50, "adults": 1, "children": 0})
room_data["key"]["price"] = 25
room_data.sync()否则,将设置该值,但不能对其进行更改。
由于Python语义的原因,货架无法知道何时修改了可变的持久性字典条目。默认情况下,修改后的对象只在分配到货架上时才会被写入(参见示例)。如果可选的
writeback参数设置为True,那么所有访问的条目也会缓存在内存中,并写回sync()和close();这可以使它更容易在持久字典中更改可变条目,但是,如果访问了许多条目,它可以为缓存消耗大量内存,而且由于所有访问的条目都会被写回(无法确定哪些访问的条目是可变的,哪些实际上是可变的),所以它可以使关闭操作变得非常慢。
https://stackoverflow.com/questions/44154932
复制相似问题