nodb不是数据库..但看起来有点像。

nodb的Python项目详细描述


nodb
====

但看起来有点像!*

**nodb**是一个非常简单的pythonic对象存储,基于亚马逊的
s3静态文件存储。

它对于**原型制作**、**临时黑客**和(可能)甚至对于
**zappa<;https://github.com/miserlou/zappa>;``应用程序**来说都是非常有用的,



功能
——

-无架构!
-服务器更少!
-使用s3作为数据存储。
-使用"cpickle"加载到本机python对象
-可以使用json作为不受信任数据的序列化格式
-基于本地文件存储的缓存
-便宜(ish)!
-快速(ish)!(尤其是lambda)

对同一索引进行写入和后续读取的000个
(500个并发)请求的平均时间为400毫秒。这对于
许多应用程序来说都是不可接受的,即使那些没有稀疏数据的应用程序也是如此,尽管
这是首选。


installation
----


**nodb**可以通过"pip"轻松安装,例如:





$pip install nodb

警告!
——

**nodb**默认为**不安全**!在将"serializer"设置为"json"之前,不要对不受信任的数据使用它!

使用
----

**nodb**非常容易使用!

您只需创建一个nodb对象,将它指向您的bucket并告诉它要索引的
字段。代码::python


from nodb import nodb

nodb.bucket="my-s3-bucket"
nodb.index="name"




…代码::python

保存一个对象!
user={"name":"jeff","age":19}
nodb.save(user)true

加载我们的对象!
user=nodb.load("jeff")
print user['age']\19


注意导入和
配置是相同的!

…代码::python

class user(object):
name=none
age=none


def print\u name(self):
print"嗨,我是"+self.name+"!"

new嫒user=user()
new嫒user.name="jeff"
new嫒user.age=19
nodb.save(new嫒user)true

jeff=nodb.load("jeff")
jeff.print嫒name();嗨,我是杰夫!

高级用法
----


不同的序列化程序
~~~~~~~~~~~~~~~~~~~~~~~~

要使用更安全的非pickle序列化程序,只需将json设置为序列化程序:

。代码::python

nodb=nodb()
nodb.serializer="json"

``加载``,就像这样:

…代码::python加载我们的对象和metainfo!
user,datetime,uuid=nodb.load("jeff",metainfo=true)


您还可以为不存在的值传递"default"参数。

代码::python

user=nodb.load("jeff",默认值为{}){}


可读索引
~~~~~~~~~~~~~~~~~~~~~~~~~~~

如果希望能够通过aws控制台调试
,请将"人类可读索引"设置为true:

。代码::python

nodb.human_readable_index=true


caching
~~~~~~~


代码::python

nodb.cache=true

todo(可能?)
----

-**安慰剂试验**
-**python3**支持
-本地文件存储
-查询范围(仅数字ID)等等
-不同的序列化程序
-自定义序列化程序
-多个索引
-压缩
-存储桶管理
-伪锁定
-性能/负载测试

相关项目
----

-`zappa<;https://github.com/miserelou/zappa>;`_-python的无服务器框架!
-`k.e.v.<;https://github.com/capless/kev>;``基于redis、s3和s3/redis混合后端的键值存储的python orm。

所以还有很多工作要做。
我们非常欢迎您的贡献!

请在提交修补程序之前提交讨论票。pull
请求应该以"master"为目标,如果合并,nodb应该保持"shippable"
状态。

你可以在他们的自述文件中学习使用。
测试套件将由"travis
ci<;https://travis ci.org/miserlou/nodb>;""在打开拉取请求后运行。


请将与您的更改相关的github问题或拉取请求url包含在代码中作为注释
(`example<;https://github.com/miserelou/zappa/blob/fae2925431b820eaedf088a63022e4120a29f89/zappa/zappa.py l241-l243>;````````这对项目的可维护性有很大帮助,因为它允许我们跟踪
用例并解释决策。

许可证
----

(c)Rich Jones 2017,麻省理工学院许可证。原始:html

<;p align="center">;

…原始:html

<;/p>;

…|构建状态图像::https://travis ci.org/miserlou/nodb.svg
:目标:https://travis ci.org/miserlou/nodb
…|覆盖范围图像::https://img.shields.io/covertails/miserlou/nodb.svg
:目标:https://covertails.io/github/miserlou/nodb
。| pypi图像::https://img.shields.io/pypi/v/nodb.svg
:目标:https://pypi.python.org/pypi/nodb
…|松弛图像::https://img.shields.io/badge/chat-slack-ff69b4.svg
:目标:https://slack.zappa.io/
…| gun.io图像::https://img.shields.io/badge/made%20by gun.io blue.svg
:目标:https://gun.io/
…| patreon图像::https://img.shields.io/badge/support patreon brightgreen.svg
:目标:https://patreon.com/zappa

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

推荐PyPI第三方库


热门话题
java如何在安卓 studio中使用调用jaxws web服务的jar文件   java双时间模拟时钟不打印两个不同的时间   java Jackson反序列化处理不带字段的生成值   多线程在java同步中读锁的目的是什么   为什么java中有这么多获取日期时间的方法?   java从listview中的TextView获取数据   java是否可以定义如何对枚举进行(反)序列化以在枚举内持久化?   Java:异常处理我的catch()有问题   VMWare java SDK:可用的PerfMetricID何时不报告数据?   exec在Java中执行命令而不重定向输出   java使用SpringXML配置实现观察者模式?   java在竹笔平板电脑中使用JPen