import lmdb
env = lmdb.open(path_to_lmdb)
现在我似乎需要创建一个事务和一个游标,但是我该如何获取可以迭代的键列表?
一种获取所有键的总数,而无需逐个枚举它们,也要计算所有子数据库的方法:
with env.begin() as txn:
length = txn.stat()['entries']
在我的笔记本电脑上使用手工制作的1000000大小数据库进行测试结果:
this
这样的东西:with env.begin() as txn:
with txn.cursor() as curs:
# do stuff
print 'key is:', curs.get('key')
这可能不是最快的方法:
with env.begin() as txn:
myList = [ key for key, _ in txn.cursor() ]
print(myList)
免责声明:我对这个库一无所知,只是在它的文档中搜索了关键词key
。
cursor.iternext()
函数并设置参数values=False
来避免这种情况。with env.begin() as txn:
keys = list(txn.cursor().iternext(values=False))
我对拥有2^20条记录,每个记录都有16 B的关键字和1024 B的值的数据库进行了简短的基准测试。
通过游标迭代(包括值)检索关键字平均需要874毫秒,在7次运行中,而第二种方法仅返回关键字平均需要517毫秒。这些结果可能会因关键字和值的大小而异。