用元组索引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_many和delete_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')。