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 Android首选项相同getPreference()值的不同数据   字符串如何在Java中连接两个列表中的单词   安卓 Java Socket编程:检测客户端和服务器是否连接   使用JTextField的java无法将值转换为int   在java中,如何在不通过超级构造函数设置的情况下将消息设置为自定义异常类   用于标识属性值的java正则表达式模式   Android中的java不可见谷歌地图   java正确取消启动ExecutorService的JavaFX任务   在非活动java类中使用安卓的融合位置提供程序,并在主活动类中获取经度和纬度   spring为什么我的大摇大摆不能用springboot在java中工作?   java JSF(2.2)ViewScope在Weblogic 12.2.1.2和JDK 8上使用Spring 4.3.7(在Mac OS和Docker Oracle Linux环境上)   java如何用一个按钮提高计时器速度   java如何检查字符是否是元音?   注册表引用了不存在的Java运行时环境安装或运行时已损坏错误   来自ResultSet java的mysql getDateTime   maven LanguageTool Java API是否具有“无用”依赖关系?   twitter api身份验证的java Trycatch问题   java在Apache Struts 1.1中是否可以显式白名单?   安卓致命异常:主java。lang.RuntimeException:被问及未知片段