meuhdb数据库显示
meuhdb的Python项目详细描述
The database that says “Meuh”
meuhdb是用python编写的“伪”键/json值存储。
基本用法
>>>frommeuhdbimportMeuhDb>>>db=MeuhDb()# Create in-memory database>>>db.set('one',{'name':'Alice','good':True,'chief':True})>>>db.set('two',{'name':'Bob','good':True})>>>db.set('three',{'name':'Carl','good':False})>>>db.filter(name='Alice'){'one':{'chief':True,'good':True,'name':'Alice'}}>>>db.filter(good=True){'two':{'good':True,'name':'Bob'},'one':{'chief':True,'good':True,'name':'Alice'}}>>>db.filter(good=True,chief=True)# More than one criteria, it's a "AND"{'one':{'chief':True,'good':True,'name':'Alice'}>>>db.delete('one')>>>db.filter(name='Alice'){}>>>db.exists('one')False>>>db.insert({'name':'John'})'eb3c3a1d-8999-4052-9e3c-2f3542c047b1'>>>db.update('eb3c3a1d-8999-4052-9e3c-2f3542c047b1',{'age':42})>>>db.get('eb3c3a1d-8999-4052-9e3c-2f3542c047b1'){'age':42,'name':'John'}
目前,您只能查询“equalities”,即 您要查找的内容与json字段中的内容相等 (无特殊运算符:大于、不同等)。
值必须是json可序列化的值(字典不起作用 包含日期、日期时间、集合等)
数据库创建
有几个可选参数带有MeuhDb类 构造器:
MeuhDb(path=None,autocommit=False,autocommit_after=None,lazy_indexes=False,backend=DEFAULT_BACKEND)
- path:是要保存的json数据库的文件路径 它变成了一个文件。如果文件已经存在,^ {STR 1 } $MEUHDB 尝试加载 它的数据。如果没有提供,数据库将在内存中。
- autocommit:如果设置为True,则每个“write”操作都将是 传输到文件。它可能会消耗I/O,因为整个数据库 每次都写在磁盘上。
- autocommit_after:一个数值。如果设置了,数据库将 提交每个“n”写操作。记住,如果 autocommit标志已设置,它的优先级高于计数器。
- lazy_indexes:当设置为true时,当db写入 数据库,只存储索引的定义,而不存储索引 重视自己。这意味着db在写入时间上更快,但是 加载速度会变慢,因为我们需要重建所有索引,
- backend:选择可以使用的json后端。有3个 可能的后端,从效率最低的,到最好的:“json” (从标准库),“simplejson”、“jsonlib”、“yajl”或“ujson”。 meuhdb将尝试加载其中的每一个并使其可用 如果你愿意的话。DEFAULT_BACKEND值将占用最多 正在执行可用的后端值。如果您提供不可用的 后端,别担心,meuhdb将回到舒适的 `json来自标准库。
示例:
>>>db=MeuhDb('hello.json',autocommit=False,backend='ujson')>>>db.set('1',{'name':'Alice'})# data is not on disk>>>db.commit()# saves to disk>>>db=MeuhDb('hello.json',autocommit=True)>>>db.all()# Data is reloaded from the disk{u'1':{u'name':u'Alice'}}>>>db.set('2',{'name':'Bob'})# data is written on disk
索引
meuhdb支持创建索引。可以将一个或多个字段索引到 加速查询。
示例:
>>>db.create_index('name')>>>db.filter(name='Alice')# Will use this index
- 您不必索引json值中的所有可用字段, 只有你可以查询的那个。
- 索引将与数据库一起保存在commit()上。
- 如果索引被搞砸了,只需使用 recreate参数:db.create_index('name', recreate=True)。
索引类型
您可以使用以下命令指定索引类型:
db.create_index('name', _type='lazy')
只能创建两种类型的索引:default或lazy。懒惰的 提交数据库时,将不存储索引,并将 启动时重新加载。可以混合使用默认索引和惰性索引。
注意:因为所有json键都应该是字符串,所以显然不能存储 具有非字符串值的索引。一旦索引收到 非字符串值(例如int或布尔值)将被更改 变成一个懒惰的索引。
警告
这不是真正的acid就绪数据库管理器。本遗嘱 可能适合“一个用户专用”用例。打开装载物 文件非常消耗I/O。因此meuhdb将never替换 正确的nosql数据库系统。
黑客
meuhdb将使用标准的python 2发行版。(我有 准备好python-3)
在virtualenv中,只需克隆此存储库并将其安装到dev中 模式:
git clone https://github.com/brunobord/meuhdb.git cd meuhdb pip install -e ./
您可能希望安装这些软件包中的一个或多个,以便能够选择 这些增强的后端之一:
- simplejson,
- jsonlib(或jsonlib-python3),
- yajl,
- ujson
要运行测试,必须安装tox(pip install tox) 只需运行命令tox。
待办事项
很多东西都不见了。The Github issues list将作为 “待办事项列表”。如果你有任何错误报告,建议,请做。
许可证
本软件是根据麻省理工学院的许可条款发布的,请参见 LICENSE 文件以获取更多信息。