用元组索引leveldb

jigfyp的Python项目详细描述


jigfyp是leveldb的查询生成器。 它允许您将leveldb范围指定为字符串元组。

初始化

使用leveldb对象初始化jigfyp。

import leveldb, Jigfyp

db = leveldb.LevelDB()
j = jigfyp.Jigfyp(db)

使用单个键

这些例子中的关键是b'one!two!three'

j.put_one((b'one', b'two', b'three'), b'Hi')
j.get_one((b'one', b'two', b'three'))
j.delete_one((b'one', b'two', b'three'))

使用键的范围

下面是添加一些记录的一种方法。

j.put_one((b'one', b'two', b'three'), b'Hi')
j.put_one((b'one', b'two', b'four'), b'Hi')
j.put_one((b'one', b'two', b'seven), b'Hi')
j.put_one((b'over', b'nine', b'thousand'), b'Hi')

如果您正在编写多个记录,则可以使用put_many方法保存 相同的数据,但是有一个leveldb.WriteBatch,通常更快。

records = [
    ((b'one', b'two', b'three'), b'Hi'),
    ((b'one', b'two', b'four'), b'Hi'),
    ((b'one', b'two', b'seven), b'Hi'),
    ((b'over', b'nine', b'thousand'), b'Hi'),
]
j.put_many(records)

最酷的部分是get_manydelete_many方法。有了这些, 您指定一个部分键,以该键开头的所有内容都会被发出。 考虑一个包含上述四条记录的数据库。如果我们不争论 到get_many,我们将读取所有数据。

j.get_many()

如果我们通过(b'one', b'two')

j.get_many(b'one', b'two')

我们将用这些键获得三张唱片

* ``(b'one', b'two', b'three')``
* ``(b'one', b'two', b'four')``

而不是用这些键录制的唱片

  • (b'one', b'two', b'seven)
  • (b'over', b'nine', b'thousand')

同样,如果运行以下命令,

j.delete_many(b'one')

我们删除所有键以b'one'开头的记录,留下一个 数据库中的单个记录,键为(b'over', b'nine', b'thousand')

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

推荐PyPI第三方库


热门话题
java OpenJDK交叉编译:失败无法生成目标   java使用Hibernate向postgresql表插入json值   Java7中的新Swing JLayer   java从另一个类访问方法和属性,而不实例化它   java右键单击弹出菜单无法聚焦JTextField   java是否可以使用jpa@Query调用Oracle函数   java是打印任何类型的ArrayList元素的通用方法   使用多重映射作为参数的Java   java我有两个字符串,内容相同,但哈希代码不同,因此。equals方法正在重新运行false。请建议如何解决这个问题   java JPA查询元素集合   java如何将数据从请求绑定到现有对象?多步骤形式   java在没有警告的情况下转换泛型类型?   声明Java乘法长和浮点数,结果是哪种数据类型?