shelve类似于一个key-value数据库,可以很方便的用来保存Python的内存对象,其内部使用pickle来序列化数据,简单来说,使用者可以将一个列表、字典、或者用户自定义的类实例保存到shelve中,下次需要用的时候直接取出来,就是一个Python内存对象,不需要像传统数据库一样,先取出数据,然后用这些数据重新构造一遍所需要的对象。
简单使用:
>>> import shelve >>> d = shelve.open('t.s') >>> d['key']= [] >>> d['key'] [] >>> d.cache {} >>> d['key'].append(1) >>> d['key'] #发现直接修改没有起作用 [] >>> #修改数据的方法 ... >>> tmp = d['key'] #方法1.将要修改的数据复制给一个临时变量,修改临时变量,完成后,在将临时变量重新赋值给要修改的数据 >>> tmp.append(1) >>> tmp.append(2) >>> d['key'] = tmp >>> d['key'] [1, 2] >>> d.cache {} >>> d.close() >>> d = shelve.open('t.s', writeback=True) #方法2.将writeback置为True,当数据发生变化会回写,不过会导致内存开销比较大 >>> d['key'] [1, 2] >>> d.cache {'key': [1, 2]} >>> d['key'].append(3) >>> d['key'].append(4) >>> d['key'] [1, 2, 3, 4] >>> d.cache #cache同步变化 {'key': [1, 2, 3, 4]} >>> d.close()