linux下berkeley-db及python binding安装
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同样也是数字。
#-*- 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()
https://www.jcea.es/programacion/pybsddb_doc/ 相关linux下关于python berkeley-db 文档地址!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。