zoukankan      html  css  js  c++  java
  • Python2.7-shelve

    shelve 模块,持久化对象数据,可以说是 pickle 模块的封装,用于把像字典一样的以键-值存储的数据持久化存储,像操作数据库。当我们写程序的时候如果不想用关系数据库那么重量级的东东去存储数据,不妨可以用 shelve。shelf 也是用 key 来访问的,使用起来和字典类似。shelve 其实用 anydbm 去创建 DB 并且管理持久化对象的。

    模块方法:

    shelve.open(filename, flag='c', protocol=None, writeback=False):创建一个 Shelf 对象,打开一个 filename 文件,flag(r:只读;w:读写;c:读写如果文件不存在则创建;n:总是创建一个新的数据库读写),protocol 指定 pickle 格式,writeback 若为 False,则如果键-值里的值还是键-值形式,无法修改第二层的数据,第一层的键-值仍可修改,若为 True,则都可以修改,但会把所有信息都缓存起来,消耗大量内存,并导致关闭的时候较慢

    模块的类:

    1、Shelf(dict, protocol=None, writeback=False):从 dict 创建,其余同上
    Shelf.sync():若 writeback 为真,则清空所有缓存并将修改保存至磁盘
    Shelf.close():关闭文件,同时调用 sync
    2、BsdDbShelf(dict, protocol=None, writeback=False):shelf 子类,增加了 first(), next(), previous(), last() 和 set_location() 操作,这些操作只在 bsddb 模块里有,别的数据库模块没有,所以传入的 dict 对象也要有对应的这些方法
    3、DbfilenameShelf(filename, flag='c', protocol=None, writeback=False):shelf 子类,接收 filename 而不是类字典对象,其余相同

    ---------------- 坚持每天学习一点点
  • 相关阅读:
    优化SQL查询:如何写出高性能SQL语句
    提高SQL执行效率的16种方法
    Spring Ioc DI 原理
    java内存泄漏
    转:js闭包
    LeetCode Best Time to Buy and Sell Stock III
    LeetCode Best Time to Buy and Sell Stock with Cooldown
    LeetCode Length of Longest Fibonacci Subsequence
    LeetCode Divisor Game
    LeetCode Sum of Even Numbers After Queries
  • 原文地址:https://www.cnblogs.com/tccbj/p/8384742.html
Copyright © 2011-2022 走看看