zoukankan      html  css  js  c++  java
  • Python2.7-dbm、gdbm、dbhash、bsddb、dumbdb

    dbmgdbmdbhashbsddbdumbdb 模块,都是操作数据库文件的模块,打开后都会返回对应数据库类型对象,类似字典,有许多操作和字典操作相同,键和值都是以字符串形式保存。dbm 是简单的数据库接口提供 unix 下“(n)dbm”接口,gdbm 是 GNU 系统的数据库接口实现,dbhash 是 BSD 数据库接口实现,bsddb 是 Berkeley 数据库接口实现,dumbdbm 是纯 python 实现不需要外部库的简便数据库接口实现

    除了 bsddb,其余打开数据库文件的方式都是 open(filename[, flag[, mode]]):打开数据库文件 filename,flag指定模式(r:只读(默认);w:读写;c:读写如果文件不存在则创建;n:总是创建一个新的数据库读写),mode 指定 unix 模式下的文件类型,仅用于数据库创建,返回对应的对象。
    bsddb 由于模块内包括了几种不同类型的数据库因此有不同的打开方法,bsddb.hashopen(filename[, flag[, mode[, pgsize[, ffactor[, nelem[, cachesize[, lorder[, hflags]]]]]]]])、bsddb.btopen(filename[, flag[, mode[, btflags[, cachesize[, maxkeypage[, minkeypage[, pgsize[, lorder]]]]]]]])、bsddb.rnopen(filename[, flag[, mode[, rnflags[, cachesize[, pgsize[, lorder[, rlen[, delim[, source[, pad]]]]]]]]]])。前三个参数都和普通 open 一样,后面参数一般情况都默认,不需要修改,他们的意义和使用方法参考 Berkeley 数据库文档

    关闭都是调用 close()

    其余不同之处下面一一列举:

    1、dbm

    1.1 dbm 可以用于 ndbm、BSD DB、GNU GDBM 接口,所以有一个模块属性 dbm.library,返回使用数据库的名字

    1.2 dbm 在我的电脑上导入失败,没有这个模块,应该是由于 Windows 系统下没有这类型的数据库

    2、gdbm

    2.1 gdbm 在 open 时 flag 还可以附加额外的字符(f:快速模式打开文件,数据库的写入不会同步,需要手动保存;s:同步模式,对数据库的修改会马上同步保存;u:打开时不给数据库上锁)

    2.2 对象额外方法

    firstkey():获得数据库第一个 key 的对应数据。数据排列是根据 gdbm 内部的 hash 值排列的,不能通过 key 的值来排序
    nextkey(key):获得 key 后面一个数据,可用于循环遍历
    reorganize():重新构建数据库,会把删除的部分所占空间释放。不使用这个方法,被删的空间不会释放,会在下次添加新数据时被重新使用
    sync():同步更新,把未写入磁盘的数据写入

    2.3 gdbm 在我的电脑上也导入失败,没有这个模块,应该也是由于 Windows 系统下没有这类型的数据库

    3、dbhash

    3.1 dbhash 在 open 时 flag 可以附加额外字符 l,用于指示数据库需要被锁定,但只能用于支持锁定 BSD db 的平台

    3.2 对象额外方法

    first():返回第一组键值对数据
    last():返回最后一组数据
    next():返回下一组数据,和 first 一起使用,遍历数据库
    previous():返回之前一组数据,和 last 一起使用,遍历数据库
    sync():把未写入磁盘的数据写入

    4、bsddb

    4.1 bsddb 支持 Berkeley 数据库 4.0 至 4.7 版本

    4.2 三种打开方法根据名称分别为:以 hash 格式打开,以 btree 格式打开,以 DB 记录形式打开。具体区别暂时不了解。。

    4.3 对象额外方法

    keys():列表形式返回数据库文件里包含的键,顺序是不可靠的,是没有特定规律的
    has_key(key):判断 key 是否存在数据库中
    set_location(key):返回包含键和值的元组,并将 cursor 移至那里。若 key 不存在,以 btree 形式打开的会移至当前数据的下一个,其余会抛出 KeyError
    first():返回第一组键值对数据
    last():返回最后一组数据
    next():返回下一组数据,和 first 一起使用,遍历数据库
    previous():返回之前一组数据,和 last 一起使用,遍历数据库
    sync():把未写入磁盘的数据写入

    5、dumbdbm

    5.1 dumbdb 在 open 时 flag 参数会被忽略,永远是 c 模式

    5.2 对象额外方法

    sync():把未写入磁盘的数据写入。这个方法会在 Shelve 对象调用 sync 时被调用

    ---------------- 坚持每天学习一点点
  • 相关阅读:
    sqlite3数据库的简要应用
    5分钟把任意网站变成桌面软件--windows版
    bootstrap-multiselect 的简单使用,样式修改,动态创建option
    jquery自定义进度条与h5原生进度条
    Angular 4+ Http
    Flexible Box布局基础知识详解
    Angular4+路由
    Angular 4 设置组件样式的几种方式
    Angular 4 自定义组件封装遇见的一些事儿
    angular4 中自定义pagination组件
  • 原文地址:https://www.cnblogs.com/tccbj/p/8399099.html
Copyright © 2011-2022 走看看