跳转到主要内容

基于文件的简单KV存储

项目描述

kvfile

Travis Coveralls

这是一个基于文件的简单键值存储,可以容纳大量数据集,同时占用较小的内存空间。

内部将使用较快的leveldb作为存储后端,如果不可用则回退使用sqlite3

基础

API应该对任何使用Python的人都很熟悉。它公开了从数据库读取的getkeysitems,以及设置数据库中值的set

初始化

import datetime
import decimal

from kvfile import KVFile

kv = KVFile()

设置值

kv.set('s', 'value')
kv.set('i', 123)
kv.set('d', datetime.datetime.fromtimestamp(12325))
kv.set('n', decimal.Decimal('1234.56'))
kv.set('ss', set(range(10)))
kv.set('o', dict(d=decimal.Decimal('1234.58'), 
                 n=datetime.datetime.fromtimestamp(12325)))

获取值

assert kv.get('s') == 'value'
assert kv.get('i') == 123
assert kv.get('d') == datetime.datetime.fromtimestamp(12325)
assert kv.get('n') == decimal.Decimal('1234.56')
assert kv.get('ss') == set(range(10))
assert kv.get('o') == dict(d=decimal.Decimal('1234.58'), 
                           n=datetime.datetime.fromtimestamp(12325))

列出值

keys()items()方法返回一个生成器,高效地生成值以进行流处理。

返回的数据根据键(默认情况下)升序排序

assert list(kv.keys()) == ['d', 'i', 'n', 'o', 's', 'ss']
assert list(kv.items()) == [
  ('d', datetime.datetime.fromtimestamp(12325)), 
  ('i', 123), 
  ('n', decimal.Decimal('1234.56')), 
  ('o', {'d': decimal.Decimal('1234.58'), 
         'n': datetime.datetime.fromtimestamp(12325)}), 
  ('s', 'value'), 
  ('ss', {0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
]

reverse参数设置为True,以使keys()items()方法按降序排序。

批量插入数据

当批量插入数据时,SQLite数据库后端可能非常慢。您可以使用插入方法高效地批量插入。

kv.insert(((str(i), ':{}'.format(i)) for i in range(50000)))

默认批处理大小为1000,您应根据数据大小和可用内存进行修改。

kv.insert(((str(i), ':{}'.format(i)) for i in range(50000)), batch_size=40000)

如果您需要从生成器中插入数据并使用插入的数据,请使用insert_generator方法

for key, value in kv.insert_generator(((str(i), ':{}'.format(i)) for i in range(50)), batch_size=10):
    print(key, value)

安装leveldb

基于Debian的Linux

$ apt-get install libleveldb-dev libleveldb1

基于Alpine的Linux

$ apk --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --update add leveldb leveldb-dev

基于OS X

$ brew install leveldb

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

kvfile-1.1.2.tar.gz (11.7 kB 查看哈希值)

上传时间 源代码

构建分发

kvfile-1.1.2-py2.py3-none-any.whl (9.4 kB 查看哈希值)

上传时间 Python 2 Python 3