如何使用python计算和枚举lmdb中的键?

Dou*_*oug 10 python lmdb

import lmdb
env = lmdb.open(path_to_lmdb)
Run Code Online (Sandbox Code Playgroud)

现在我似乎需要创建一个事务和一个游标,但是如何获得一个可以迭代的键列表呢?

syt*_*rus 10

获取密钥总数而不单独枚举密钥的方法,也计算所有子数据库:

with env.begin() as txn:
    length = txn.stat()['entries']
Run Code Online (Sandbox Code Playgroud)

在我的笔记本电脑上使用手工制作的数据库大小为1000000的测试结果:

  • 上述方法是瞬时的(0.0 s)
  • 迭代方法大约需要1秒钟.


Sai*_*ait 6

您是否正在寻找类似的东西this

with env.begin() as txn:
    with txn.cursor() as curs:
        # do stuff
        print 'key is:', curs.get('key')
Run Code Online (Sandbox Code Playgroud)

更新:

这可能不是最快的

with env.begin() as txn:
   myList = [ key for key, _ in txn.cursor() ]
   print(myList)
Run Code Online (Sandbox Code Playgroud)

免责声明:我对库一无所知,只是搜索了其文档并key在文档中进行了搜索。