bsddb和reprepro(伯克利)数据库

2024-05-20 14:36:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图读取reprepro创建的数据库文件。我对bdb没有太多的经验,所以我可能会感到困惑,但是看起来数据库在某种程度上是分层的。在

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

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_转储显示:

^{pr2}$

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

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


Tags: 文件path数据库内容dbmainpackageslocal
1条回答
网友
1楼 · 发布于 2024-05-20 14:36:56

答案似乎是bsddb接口的“nice”版本不支持一个文件中的多个btree表。您可以通过数据库,使用:

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)

相关问题 更多 >