【问题标题】:Count number of records in lmdb databse with python用python计算lmdb数据库中的记录数
【发布时间】:2016-03-28 23:38:40
【问题描述】:

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

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

我如何计算这个数据库中的记录数?

【问题讨论】:

  • 我不明白接近投票。仅仅因为一个问题简短或基本,并不意味着它太宽泛或不清楚。这是一个关于编码的直接、具体的问题,可以有一个明确的正确答案,我看不出它为什么不适合 Stack Overflow 的格式。我投票决定重新开放。我恭敬地提前要求任何投票决定关闭的人请发表评论解释原因。

标签: python lmdb


【解决方案1】:

我觉得应该是这样的:

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

然后打印Jaco粘贴到这里的目录。

【讨论】:

    【解决方案2】:
        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) 给出一个命名数据库的条目。

    【讨论】:

      【解决方案3】:

      您可以使用event.stat()。它将返回以下带有entries 的字典,其中详细说明了该数据库中的记录数:

      {'branch_pages': 1040L,
      'depth': 4L,
       'entries': 3761848L,
       'leaf_pages': 73658L,
       'overflow_pages': 0L,
       'psize': 4096L}
      

      【讨论】:

        【解决方案4】:

        我找到了一个使用for 循环的简单解决方案。这里是:

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

        不过,我认为应该有更好的方法使用预定义函数。

        【讨论】:

        • sum(1 for _ in lmdb_env.cursor() )
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-16
        • 2021-11-27
        • 2021-09-18
        • 1970-01-01
        • 2023-03-03
        相关资源
        最近更新 更多