首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bsddb和reprepro (berkeley)数据库

bsddb和reprepro (berkeley)数据库
EN

Stack Overflow用户
提问于 2010-12-30 22:15:50
回答 1查看 674关注 0票数 2

我正在尝试读取由reprepro创建的数据库文件。我没有那么多使用bdb的经验,所以我在这里可能会感到困惑,但看起来数据库在某种程度上是分层的。

如果我简单地执行btopen('path/to/packages.db', 'r'),我会得到包含如下内容的数据库对象:

代码语言:javascript
复制
In [4]: packages.items()
Out[4]: 
[('local-lenny|main|amd64', '\x00\x00\x00\x04'),
 ('local-lenny|main|i386', '\x00\x00\x00\x02'),
 ('local-lenny|main|powerpc', '\x00\x00\x00\x14'),
 ('local-lenny|main|source', '\x00\x00\x00\x06'),
 ('local-lenny|main|sparc', '\x00\x00\x00\x12')]

但是,db4.6_dump显示:

代码语言:javascript
复制
VERSION=3
format=bytevalue
database=local-lenny|main|sparc
type=btree
db_pagesize=4096
HEADER=END
 <loads of data>

file将文件本身标识为:/var/packages/db/packages.db: Berkeley DB (Btree, version 9, native byte-order)

我怎么才能找到这些内容呢?如果我理解正确的话,我只得到了keys()中实际数据库的名称。我现在怎么才能找到那些dbs的内容?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-30 23:40:46

答案似乎是bsddb接口的“好”版本不支持一个文件中的多个btree表。您可以通过bsddb.db显式打开这样的表,使用:

代码语言:javascript
复制
env = db.DBEnv()
env.open(None, db.DB_CREATE | db.DB_INIT_MPOOL)
internal_db = db.DB(env)
internal_db.open("the filename", "the internal db name", db.DB_BTREE, db.DB_RDONLY)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4563284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档