创建和读取快速常量数据库

speedyb的Python项目详细描述


简介

speedyb允许您创建和读取常量数据库。

  • fast lookups
  • database cannot be modified
  • database can be shared by multiple processes without using more memory
  • fast startup time

假设您有这样一个dict:

d = {
  'Alice': '26 Pine Street',
  'Bob':   '54 Oak Drive'
}

可以将此写入数据库文件: speedyb_writer.dict_to_文件(d,'my.db')

问题

q:为什么不将dict存储在json或pickle文件中并读取到 Python迪克特?

a:首先,加载dict的每个进程将分别分配 内存,而speedyb共享内存。其次,对于一个大的db 时间是很重要的,而对于speedyb来说,时间基本上是瞬间的。

q:SpeedYB与Berkeley DB、LevelDB等相比如何?

a:它明显更快,因为它是常数。

安装

签出源并运行python setup.py install

使用SpeedYb

创建数据库

import speedyb_writer
d = { ... } # data to store
speedyb_writer.dict_to_file(d, 'new.db')

这将创建一个包含d的新数据库文件。可能会很慢。文件 创建时间与d中的键数成线性关系。

读取db

from speedyb_reader import speedyb_reader
db = speedyb_reader('tiny.tmp') # open file
res = db.get('Alice') # lookup a key

如果密钥不存在,则res为none。

$id:readme.rst,版本1.2 2012-06-04 04:59:31 asher exp$

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

推荐PyPI第三方库


热门话题
java将一个节点拖到另一个不运行JavaFX的节点中   java如何在spring boot中创建完全自定义的查询   java Arraylist和ArrayListBlockingQueue之间的区别是什么?   java Weblogic会中断长时间运行的线程吗   java如何调用displayAd()方法?   使用数组在两个组之间进行java IPL匹配   java如何在Eclipse中的org下创建测试套件。朱尼特   java获取屏幕上任意点的鼠标坐标   正则表达式需要java正则表达式方面的帮助   如何使用Java获取Ram大小和硬盘大小?   java如何将所需长度设置为数组中的整数?   安卓应用程序启动前的java程序已终止   swing设置要在Java代码中打印的页边距   迭代期间java故障安全迭代器的删除   java如何在main中调用方法,以便它们在同一行上输出?   编译Java:尝试播放mp3文件时出错   java如何使用Spring数据Rest在POST调用中保存嵌入对象   java JAXWS如何在端点外部注入SecurityContext