Python bsddb模块操作Berkeley DB数据库介绍
bsddb模块是用来操作bdb的模块,bdb是著名的Berkeley DB,它的性能非常好,mysql的存储后端引擎都支持bdb的方式。这里简单介绍一些关于bsddb的使用方法。 bdb不同于一般的关系数据库,它存储的数据只能是以key和value组成的一对数据,使用就像python的字典一样,它不能直接表示多个字段,当要存储多个字段的数据时,只能把数据作为一个整体存放到value中。 使用bsddb面临的第一问题是使用什么数据访问方法,bdb支持四种:btree,hash,queue,recno。这里先说说它们有什么区别,btree是用的树结构来才存储的数据,查询速度很快,可以存储任意复杂的key和value。hash是用的hash算法,速度其实和btree比差不多的,但是当数据量特别巨大时,应该使用hash。queue是队列操作,它有一个限制,它只能存储定长的数据,也就是说value的长度是固定的!但是queue可以保持数据的先进先出,并且对数据的插入做了特殊的优化,并且提供行级锁。queue的key必须是数字。recno和queue类似,但是它可以支持变长的value,它的key同样也是数字。 这里先对这四种数据访问方法分别做打开数据库,简单插入一条数据的演示。 复制代码 代码如下: import bsddb dbenv = bsddb.db.DBEnv() 还有一种方式是python特有的,这个是bsddb模块本身对上面的过程做了包装,比如打开btree的: 复制代码 代码如下: import bsddb db = bsddb.btopen('test.db','c') 看起来比上面的简单多了吧。但这种方式提供的接口很有限,也只有很简单的功能,没有第一种的灵活,但是它在python2.5的版本里是线程安全的。这里都介绍一下。 复制代码 代码如下: #-*- encoding: gb2312 -*- import os,sys,string import bsddb,time home = "db_home" # 创建数据库环境 下面来个使用queue的,注意看有什么区别: 复制代码 代码如下: #-*- encoding: gb2312 -*- import os,time home = "db_home" dbenv = bsddb.db.DBEnv() d.close() 那简单的第二种方式使用如下, 要简洁很多了: 复制代码 代码如下: import bsddb d = bsddb.hashopen("aaa.db","c") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |