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如何在没有代码气味的情况下编写遵循Liskov替代和其他可靠原则的不可变映射?   java最新jre上的压缩字符串对旧编译代码有好处吗?   java是否可以在javascript中取消PrimeFaces menuitem onclick函数   mysql从SQL数据库中访问java中xml名称空间标记的值   从java程序打开excel文件   java在方法中使用“var”是否会使执行(并发)线程不安全?   java使搜索视图以一种关于AndroidManifest的通用方式可用。xml   java对如何准确使用正则表达式感到困惑?   mule如何访问java文件中的记录变量   java在从2D数组引发异常后继续   枚举当前设置为的java值   java当listview只有几个项目时,如何使alert对话框显示listview的所有项目?   java getTableRow()返回大于项大小的索引   c用java传输二进制文件(数据)   java更改多选列表项复选框颜色