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 时被调用

Python2.7-dbm、gdbm、dbhash、bsddb、dumbdb的更多相关文章

  1. Python3基础(1)Python介绍、Python2 与Python3、变量、用户输入、if...else和for循环、while循环、break与continue

    ---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ P ...

  2. Python 第五篇(上):算法、自定义模块、系统标准模块(time 、datetime 、random 、OS 、sys 、hashlib 、json和pickle)

    一:算法回顾: 冒泡算法,也叫冒泡排序,其特点如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应 ...

  3. MySQL 存储引擎、锁、调优、失误与事务回滚、与python交互、orm

    1.存储引擎(处理表的处理器) 1.基本操作 1.查看所有存储引擎 mysql> show engines; 2.查看已有表的存储引擎 mysql> show create table 表 ...

  4. 编程语言、Python介绍及其解释器安装、运行Python解释器的两种方式、变量、内存管理

    一.编程语言介绍 1.1 机器语言:直接用计算机能理解的二进制指令来编写程序,直接控制硬件. 1.2 汇编语言:在机器语言的基础上,用英文标签取代二进制指令来编写程序,本质上也是直接控制硬件. 以上2 ...

  5. 【05】Python 标准模块:random、os、time、hashlib 第三方模块:excel、数据库 列表生成式

    1 模块分类 标准模块,不需要你单独安装,python自带的模块 第三方模块 自己写的python 一个python文件就是一个模块 2 random模块 2.1 随机取元素 import rando ...

  6. [基本运算符、流程控制之if判断、与用户交互、深浅拷贝]

    [基本运算符.流程控制之if判断.与用户交互] 基本运算符 1.算数运算符 python支持的算术运算符与数学上计算的符号使用是一致的 salary = 3.3 res = salary * 12 p ...

  7. CSS3与页面布局学习总结(二)——Box Model、边距折叠、内联与块标签、CSSReset

    一.盒子模型(Box Model) 盒子模型也有人称为框模型,HTML中的多数元素都会在浏览器中生成一个矩形的区域,每个区域包含四个组成部分,从外向内依次是:外边距(Margin).边框(Border ...

  8. C#、JAVA操作Hadoop(HDFS、Map/Reduce)真实过程概述。组件、源码下载。无法解决:Response status code does not indicate success: 500。

    一.Hadoop环境配置概述 三台虚拟机,操作系统为:Ubuntu 16.04. Hadoop版本:2.7.2 NameNode:192.168.72.132 DataNode:192.168.72. ...

  9. 教你一招:解决win10/win8.1系统在安装、卸载软件时出现2502、2503错误代码的问题

    经常遇到win10/win8.1系统在安装.卸载软件时出现2502.2503错误代码的问题. 解决办法: 1.打开任务管理器后,切换到“详细信息”选项卡,找到explore.exe这个进程,然后结束进 ...

随机推荐

  1. servlet 中处理 json 请求,并访问 service 类,返回处理结果

    前言:jar 包中的 servlet 必须可以处理前端发出的 ajax 请求,接收参数,并返回结果. github地址:yuleGH github 这里有个约定,url 地址是 .json 结尾的,如 ...

  2. Spring boot 入门五:springboot 开启声明式事务

    springboot开启事务很简单,只需要一个注解@Transactional 就可以了.因为在springboot中已经默认对jpa.jdbc.mybatis开启了事务.这里以spring整合myb ...

  3. python学习之老男孩python全栈第九期_第一次周末考试题(over)第三次添加完毕

    day 6python基础数据类型考试题 考试时间:两个半小时 满分100分(80分以上包含80分及格) 一,基础题. 1. 简述变量命名规范(3分) 答:(1) 变量为数字,字母以及下划线的任意组合 ...

  4. python-工厂方法模式

    源码地址:https://github.com/weilanhanf/PythonDesignPatterns 简单工厂模式的不足: 在简单工厂模式中,只提供了一个工厂类,该工厂类处于对产品类进行实例 ...

  5. ThinkPHP实现登陆功能

    思路:前台输入账号密码,后台自定义一个函数checkNamePwd()用于验证账号密码正确与否,在控制器里调用,其中,checkNamePwd()方法验证账号密码正确性是首先通过账号查找密码,然后把查 ...

  6. 设计模式(14)--Command(命令模式)--行为型

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.模式定义:   命令模式属于对象的行为模式.命令模式又称为行动(Action)模式或交易(Transactio ...

  7. VMware虚拟机安装黑苹果MacOS Mojave系统详细教程

    更多资源请百度搜索:前端资源网 欢迎关注我的博客:www.w3h5.com 最近遇到一个H5页面的 iPhone X 刘海兼容问题.查到一个 XCode 编辑器,可以模拟 iPhone X 环境运行. ...

  8. windows 7 下安装Oracle 9i 解决方法[转]

    这里首先申明下,windows7下安装oracle9i 9.0.1版本肯定是不成功的,楼主安装过无数次,网上也找过很多方法,都不可行,所以就不用试了.这里说下oracle9i 9.2版本安装出现的问题 ...

  9. LeetCode题解之Merge Two Sorted Lists

    1.题目描述 2.题目分析 题目要求合并有序的两个链表,要求不能额外申请空间. 3.代码 ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { i ...

  10. selenium 校验文件下载成功

    转自: http://www.seleniumeasy.com/selenium-tutorials/verify-file-after-downloading-using-webdriver-jav ...