meuhdb数据库显示

meuhdb的Python项目详细描述


The database that says “Meuh”

Build StatusCoverage Status

meuhdb是用python编写的“伪”键/json值存储。

安装

要安装最新版本:

pip install meuhdb

…但由于这是一个很早的版本,您最好坚持这个 GitHub源存储库。你可能想读the Changelog, 我也是。

基本用法

>>>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')

只能创建两种类型的索引:defaultlazy。懒惰的 提交数据库时,将不存储索引,并将 启动时重新加载。可以混合使用默认索引和惰性索引。

注意:因为所有json键都应该是字符串,所以显然不能存储 具有非字符串值的索引。一旦索引收到 非字符串值(例如int或布尔值)将被更改 变成一个懒惰的索引。

警告

这不是真正的acid就绪数据库管理器。本遗嘱 可能适合“一个用户专用”用例。打开装载物 文件非常消耗I/O。因此meuhdbnever替换 正确的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

要运行测试,必须安装toxpip install tox) 只需运行命令tox

待办事项

很多东西都不见了。The Github issues list将作为 “待办事项列表”。如果你有任何错误报告,建议,请做。


许可证

本软件是根据麻省理工学院的许可条款发布的,请参见 LICENSE 文件以获取更多信息。

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

推荐PyPI第三方库


热门话题
java FloatingAction按钮与RecyclerView中的CardView重叠   java如何计算CardLayout中的卡数   从远程系统上传MySQL数据库并访问Java应用程序   java调用堆栈如何处理带或不带返回类型的递归?   Springboot中的java组计数聚集   java如何在javafx textarea中使用richtextfx   获取与Mockito相关的错误时出现Java问题   java如何将JaxRS响应转换为Wiremock响应   Hadoop集群java。net ConnectionException:连接被拒绝错误   java如何加载文件私有文件类型是pem   java在元空间中的提升和加载的类   如何将系统属性传递给从HTML启动的Java小程序   java如何从网页中获取值并在主类中使用它?安卓应用   java在春天,advisor和aspect之间有什么区别?   java如何检测文件是否已重命名?   java消息驱动Bean何时使用