python使用Berkeley DB数据库实例,pythonberkeley


本文实例讲述了python使用Berkeley DB数据库的方法,分享给大家供大家参考。

具体实现方法如下:

try: 
  from bsddb import db 
except ImportError: 
  from bsddb3 import db 
print db.DB_VERSION_STRING 
#检测是否有bsddb包 
 
def irecords(curs): 
  record = curs.first() 
  while record: 
    yield record 
    record = curs.next() 
     
adb = db.DB() 
adb.open('db_filename',dbtype = db.DB_HASH, flags = db.DB_CREATE) 
for i,w in enumerate('some word for example'.split()): 
  adb.put(w,str(i)) 
   
for key, data in irecords(adb.cursor()): 
  print key,data 
adb.close() 
print '*'*60 
# 
the_same_db = db.DB() 
the_same_db.open("db_filename") 
the_same_db.put('skidoo','23')#加入数据库 
the_same_db.put('for','change the data')#改变数据库的数据 
for key, data in irecords(the_same_db.cursor()): 
  print key,data 
the_same_db.close()

运行结果如下:  

Berkeley DB 4.7.25: (May 15, 2008)
example 3
some 0
word 1
for 2
************************************************************
example 3
some 0
word 1
for change the data
skidoo 23

这里再总结一下操作步骤:

1.先初始化数据库

adb = db.DB()

2.打开数据库

adb.open('db_filename',dbtype = db.DB_HASH, flags = db.DB_CREATE)

3.插入或修改数据库中的数据

adb.put('skidoo','23')#加入数据库
adb.put('for','change the data')#改变数据库的数据

4.关闭数据库

adb.close()

希望本文所述对大家的Python程序设计有所帮助。


Berkeley DB 是不是在红帽60里面自带了

是的,不用再装了,可以直接用。给你个例子吧
#-*- encoding: gb2312 -*-import os, sys, stringimport bsddb, timehome = "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_RECNOd.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()
 

python的bsddb模块中,key与value都是只可以为一个,而且都是字符串类型,这个与Berkeley DB的设计不同

{"key":[3,2.9, True]} 这样行不行?
 

评论关闭