使用Python计算LMDB数据库中的记录数

8

我使用以下代码打开了一个 lmdb 数据库:

    lmdb_env = lmdb.open(source_path, readonly=True)

我该如何统计这个数据库中记录的数量?

我不理解关闭投票。仅仅因为一个问题很短或者基础,这并不意味着它过于宽泛或者不清晰。这是一个关于编码的直接、具体的问题,可以有明确的正确答案,我认为它符合 Stack Overflow 的格式,没有任何不适当之处。我投票要求重新开放。我恳请提前请任何投票决定保持关闭的人发表评论解释原因。 - Adi Inbar
4个回答

8

我认为应该是这样的:

lmdb_env = lmdb.open(lmdb_file_name, readonly=True)
print lmdb_env.stat()

然后它会打印Jaco在此处粘贴的目录。

3
    env = lmdb.open('db file path', max_dbs = ' > 0')
    with env.begin() as tx:
        db = env.open_db(b'db name', txn=tx)
        print(env.stat()) 
        print(tx.stat(db)) # this gives stats about one specific db

env.stat() 返回主要数据库的条目。 tx.stat(db) 返回指定数据库的条目。


1
你可以使用 event.stat()。它将返回以下字典,其中entries详细说明了此数据库中记录的数量:
{'branch_pages': 1040L,
'depth': 4L,
 'entries': 3761848L,
 'leaf_pages': 73658L,
 'overflow_pages': 0L,
 'psize': 4096L}

1
我发现使用 for 循环的简单解决方案。这是它:

count = 0
for key, value in lmdb_env.cursor():
        count = count + 1  

然而,我认为应该使用预定义函数来找到更好的方法。

1
sum(1 for _ in lmdb_env.cursor() ) - Padraic Cunningham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接