具有键的有序遍历的键值存储

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)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用安卓摄像头拍摄照片并显示   java如何从EJB计时器更改callerPrincipal?   java如何将SetInputFilter DEFLATE放入httpd。apacheso的conf文件,用于解压缩Gzip压缩的请求体   java无法使用Spring Boot创建mysql数据库   java二进制搜索递归调用数?   java-spring@transactional-performance   java为什么分类器不做任何更改就给我输入   基于Java的用户界面桌面应用   从实现接口(java)的类调用方法的继承   java DAO、Spring和Hibernate   swing Java计时框架Animator类查询   java我们可以在spring启动项目中定义更多的JNDI资源吗?   数组如何在Java中编写和插入Norder方法?   使用JSP/JAVA的mysql下拉列表   java将高分保存到游戏中   如何使用java在appium中单击gridview中的元素