具有键的有序遍历的键值存储
park的Python项目详细描述
park是python的一个持久键值api,具有顺序遍历 钥匙。密钥和值都是二进制安全的。它的用途与 leveldb,但在python标准库之外没有依赖项。
它的目的是非常容易使用,可以扩展到几个 千兆字节的数据。它允许你懒惰,直到它不符合你的 需要。在那之前使用它。
它支持简单的字节数据获取和设置:
>>> kv = park.SQLiteStore("numbers.park") >>> kv.put("1", "one") >>> kv.put("2", "two") >>> kv.put("3", "three") >>> kv.put("4", "four") >>> kv.get("2") 'two'
iterable中数据的成批设置:
>>> kv.put_many([("1", "one"), ("2", "two"), ("3", "three")]) >>> kv.get("3") 'three'
键和项目的词序排序,包括开始和结束 哨兵(包括):
>>> kv.put("1", "one") >>> kv.put("2", "two") >>> kv.put("3", "three") >>> kv.put("11", "eleven") >>> kv.put("12", "twelve") >>> list(kv.keys()) ['1', '11', '12', '2', '3'] >>> list(kv.keys(key_from="12")) ['12', '2', '3'] >>> list(kv.keys(key_from="12", key_to="2")) ['12', '2'] >>> list(kv.items(key_from="12")) [('12', 'twelve'), ('2', 'two'), ('3', 'three')]
对具有给定前缀的所有键或项进行迭代:
>>> kv.put("pet/dog", "Canis lupus familiaris") >>> kv.put("pet/cat", "Felis catus") >>> kv.put("pet/wolf", "Canis lupus") >>> list(kv.prefix_keys("pet/")) ['pet/cat', 'pet/dog', 'pet/wolf'] >>> list(kv.prefix_keys("pet/", strip_prefix=True)) ['cat', 'dog', 'wolf'] >>> list(kv.prefix_items("pet/", strip_prefix=True)) [('cat', 'Felis catus'), ('dog', 'Canis lupus familiaris'), ('wolf', 'Canis lupus')]
它和发电机配合得很好,所以你可以把所有的计数都停下来 数字(这需要一段时间):
def numbers(): for num in itertools.count(1): key = value = str(num) yield key, value kv.put_many(numbers())
或者递归地驻留目录的内容(由相对路径键控) 从本地文件系统:
def file_item(filename): with open(filename, "r") as fd: return filename, fd.read() kv.put_many(file_item(os.path.join(root, name)) for root, dirs, files in os.walk(directory) for name in files)