• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python bsddb模块操作Berkeley DB数据库介绍

Python bsddb模块操作Berkeley DB数据库介绍

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了berkeley db,berkeley db下载,berkeley db使用,berkeley db java,oracle berkeley db等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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同样也是数字。

    这里先对这四种数据访问方法分别做打开数据库,简单插入一条数据的演示。
对于python的bsddb模块来说,打开数据库的操作有两种方式,一是使用原始的接口,就是先打开一个环境,然后从这个环境中打开一个数据库,就像下面:
import bsddb

dbenv = bsddb.db.DBEnv()
dbenv.open(home, bsddb.db.DB_CREATE | bsddb.db.DB_INIT_MPOOL)
d = bsddb.db.DB(dbenv)
d.open(filename, bsddb.db.DB_BTREE, bsddb.db.DB_CREATE, 0666)
</div>

还有一种方式是python特有的,这个是bsddb模块本身对上面的过程做了包装,比如打开btree的:
import bsddb

db = bsddb.btopen('test.db', 'c')
</div>

看起来比上面的简单多了吧。但这种方式提供的接口很有限,也只有很简单的功能,没有第一种的灵活,但是它在python2.5的版本里是线程安全的。这里都介绍一下。
看看一个例子:
#-*- encoding: gb2312 -*-
import os, sys, string
import bsddb, time

home = "db_home"
filename = "test.db"
try:
    # 创建home目录
    os.mkdir(home)
except:
    pass

# 创建数据库环境
dbenv = bsddb.db.DBEnv()
# 打开数据库环境
dbenv.open(home, bsddb.db.DB_CREATE | bsddb.db.DB_INIT_MPOOL)
# 创建数据库对象
d = bsddb.db.DB(dbenv)
# 打开数据库, 这里的第二个参数就是指定使用什么数据访问方法
# btree是 bsddb.db.DB_BTREE, hash是bsddb.db.DB_HASH
# queu 是 bsddb.db.DB_QUEUE,  recno 是bsddb.db.DB_RECNO
d.open(filename, bsddb.db.DB_BTREE, bsddb.db.DB_CREATE, 0666)
# 插入一条数据,注意queue和recno的key不能是字符串的,应该是数字
d.put('test1', 'zhaowei')   
print d.items()
# 关闭,这时会把数据写回文件
d.close()
dbenv.close()
</div>
下面来个使用queue的,注意看有什么区别:
#-*- encoding: gb2312 -*-
import os, sys, string
import bsddb, time

home = "db_home"
filename = "testqueue.db"
try:
    os.mkdir(home)
except:
    pass

dbenv = bsddb.db.DBEnv()
dbenv.open(home, bsddb.db.DB_CREATE | bsddb.db.DB_INIT_MPOOL)
d = bsddb.db.DB(dbenv)
# queue必须要设置一个value的长度,它的value是定长的
d.set_re_len(40)
d.open(filename, bsddb.db.DB_QUEUE, bsddb.db.DB_CREATE, 0666)
# 它的key必须是数字
d.put(1, 'zhaowei')
print d.items()

d.close()
dbenv.close()
</div>
那简单的第二种方式使用如下, 要简洁很多了:
import bsddb

d = bsddb.hashopen("aaa.db", "c")
d['test1'] = "zhaowei"
print d.items()
d.close()
</div>

</div>

您可能想查找下面的文章:

  • Python bsddb模块操作Berkeley DB数据库介绍
  • Python bsddb模块操作Berkeley DB数据库介绍

相关文章

  • Python实现类继承实例
  • Python3基础之list列表实例解析
  • Python简单遍历字典及删除元素的方法
  • 在Django的模型中添加自定义方法的示例
  • 在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
  • 在Python中操作字典之setdefault()方法的使用
  • Python中多线程thread与threading的实现方法
  • Linux下将Python的Django项目部署到Apache服务器
  • Python基于动态规划算法计算单词距离
  • Python使用Socket(Https)Post登录百度的实现代码

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 浅析Python的Django框架中的Memcached
    • python3简单实现微信爬虫
    • python中的lambda表达式用法详解
    • Python中多线程及程序锁浅析
    • 用Python写一个无界面的2048小游戏
    • Python中Django发送带图片和附件的邮件
    • 简单介绍使用Python解析并修改XML文档的方法
    • 动态创建类实例代码
    • python使用xmlrpc实例讲解
    • 详解python的数字类型变量与其方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有