google datatstore ndb orm,可与google云数据存储一起使用(python3兼容)

ndb-orm的Python项目详细描述


python ndb orm
====

[![特拉维斯国际](https://travis-ci.org/berlincode/ndb-orm.svg?branch=master&style=flat)(https://travis ci.org/berlincode/ndb orm)
[![python版本](https://img.shields.io/pypi/pyversions/ndb orm.svg)(https://pypi.python.org/pypi/ndb orm/)
[![apache license 2.0](https://img.shields.io/pypi/l/ndb orm.svg)(https://github.com/berlincode/ndb orm/blob/master/license.txt)


ndb-orm是一种与python3兼容的orm,用于基于ndb.model(由guido van rossum创建)的google云数据存储,
可以在app engine标准之外使用。环境。

*很好地处理从应用程序引擎标准生成的数据存储实体
*python3兼容
*可从应用程序引擎标准外部使用
*基于原始ndb包
*protobuffer实现已移植到google.cloud.proto.datastore.v1.entity_pb2(也被gcloud datastore python使用)
*不依赖于旧的app engine库
*使appengine标准项目的移植更容易
*与[谷歌云数据存储](https://pypi.python.org/pypi/google cloud datastore)
*从google.cloud.datastore中使用密钥处理

这不是整个ndb包(没有ndb.context、ndb.tasklets、ndb.query或ndb.key)的直接替换,
但允许您使用ndb.model类。

有关ndb.model orm的所有可能性的详细信息,请看一下"[python ndb客户端库概述](https://cloud.google.com/app engine/docs/standard/python/ndb/)"。

从app engine standard读取用这个包编写的
实体(也使用google云数据存储)是有限制的。原因是
某些类型已更改格式(例如,具有google cloud数据存储支持时区的datetime属性)。


在不同python版本之间使用pickle属性的其他类型(如您所料)预计会失败,因此pickle.loads被禁用违约。您可以通过设置
ndb_orm.model.enable_pickle_loads为true来启用它。


quick start
--


$pip install--升级ndb orm




-----------------------------

``` python
>;
>;
>;>从google.cloud导入数据存储创建实体
>;
>;
>;
>;>client=datastore.client()
>;
>;>kind='task';新实体的kind
>;>name='sampletask';新实体的名称/id
>;
>;>key=client.key(kind,name)
>;新实体的云数据存储密钥
>;>;
>;>;entity=数据存储。entity(key=key,exclude_from_index=('text',))
>;>;entity.update({
…'文本':'有很多事情要做',
…'完成:错误,

>>>gt>gt;
>>>gt>gt>gt>gt>gt;
>
>>>>>>>>;
>>>>>>>>>>>>>>>>>>>gt;>现在通过定义一个实体并启用"任务"和"ndb格式"任务,并启用ndb格式
>>>>
>>>>
>>>
>>>>>>>>>>将ndb格式导入ndb格式为ndb格式导入ndb格式
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;ndb.enable_use_with_gcd(client.project)
>;
>;
>;>class task(ndb.model):
…text=ndb.textproperty(索引=false)
…完成=ndb.booleanproperty()
…update=ndb.datetimeproperty(auto_now=true)
>;
>;>;entity=client.get(key)现在获取相同数据的ndb模型!
>;>;打印(实体)
任务(key=<;key('task','sampletask')>;,done=false,text='much to do')
>;
>;>;客户端.put(实体)保存实体('update'属性设置为aut)omatically)
>;
>;>print(client.get(key))获取具有'update'属性集的实体
任务(key=<;key('task','sampletask')>;,done=false,text='much to do',update=datetime.datetime(2017年,8月,28日,22日,16日,15日,652839,tzinfo=<;utc>;))

>;#
>;>在不使用ndb orm的情况下访问此实体仍有可能
>;


>;ndb.enable\u use\u with\u gcd();disable ndb orm-现在我们将不再接收ndb.model

>;>print(client.get(key));如果没有ndb orm,normale get仍然有效
<;实体('task','sampletask'){'done':false,'update':datetime.datetime(2017,8,28,22,16,15,652839,tzinfo=<;utc>;),'text':'有很多事情要做'}>;
>;
````

大多数属性类型应该工作得很好。甚至structuredproperty类和关键字"indexed"、"repeated"、"compression"、"name"和"required"也应该可以工作。

公共存储库
----

[https://github.com/berlincode/ndb orm](https://github.com/berlincode/ndb orm)




许可证
--


版权所有"ndb作者"和ulf bartel。代码在
[apache 2.0](./license.txt)下获得许可。



v0.1.01717-08-28——初始公开发布。
v0.2.01717-08-28——第一个可用版本。

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

推荐PyPI第三方库


热门话题
java从BatchUpdateException确定每行执行失败的原因   switch语句的java替代方案   java是一个范围内的所有毕达哥拉斯三胞胎   java ComboPooledDataSource com。太阳代理$Proxy78无法强制转换为oracle。sql。克洛布   Eclipse Java编辑器不显示减号()   JavaFX/JavaFX根据另一个可观察属性过滤可观察列表   设计模式如何在Java项目中构造我的类   性能交换机与ArrayList Java   java如何将Cucumber与TestNG示例集成?   如何在groovy中使用JIRA REST客户端JAVA创建特定项目的版本并获取任何版本的详细信息?   字节码Bytebuddy拦截java。网服务器socket构造函数   javatomcat6。x网络。xml默认和自定义servlet路由   javagwt单元表问题   java下载文本文件   java如何在Spring OAuth+引导中捕获无效的_客户端