wanlifeipeng

  博客园 :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::

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()

 

posted on 2017-04-15 16:15  wanlifeipeng  阅读(207)  评论(0编辑  收藏  举报