app-engine-ndb相关内容

寻找想法/替代方案来提供匹配 GAE 数据存储查询的项目的页面/项目计数/导航

我喜欢数据存储的简单性、可扩展性和易用性;新的 ndb 库中的增强功能非常棒. 据我了解数据存储最佳实践,当匹配查询的项目数量很大时,不应编写代码来提供匹配查询结果的项目和/或页数;因为这样做的唯一方法是检索所有资源密集型的结果. 但是,在许多应用程序中,包括我们的应用程序,人们普遍希望看到匹配项的计数并为用户提供导航到这些结果的特定页面的能力.如文章 对大型数据集进行分页.为了支持推 ..

我怎么知道 ndb.Model.get_or_insert 是创建了一个新实体还是获得了一个现有实体?

对于以下(损坏的)函数,如果实体被创建或更新,我想返回 True,否则返回 False.问题是我不知道 get_or_insert() 是获取了现有实体还是插入了实体.有没有简单的方法来确定这一点? class MyModel(ndb.Model):def create_or_update(key, data):"""如果实体被创建或更新,则返回 True,否则返回 False."""当前 = ..
发布时间:2021-11-16 19:57:04 Python

Google App Engine Datastore 中最有效的一对多关系?

对不起,如果这个问题太简单了;我才刚上九年级. 我正在尝试了解 NoSQL 数据库设计.我想设计一个谷歌数据存储模型,最大限度地减少读/写次数. 这是一个关于一对多关系中的博文和评论的玩具示例.哪个更有效 - 将所有评论存储在 StructuredProperty 中还是在 Comment 模型中使用 KeyProperty? 同样,目标是最大限度地减少对数据存储的读/写次数.您 ..

与Python NDB一对多关系的有效实现

我想听听您对使用 Python NDB 有效实现一对多关系的看法.(例如人员(一个)到任务(多个)) 据我所知,有三种实现方式. 使用“父"参数 使用“重复"结构化属性 使用“重复"键属性 我通常会根据以下逻辑选择一种方式,但对您来说有意义吗?如果你有更好的逻辑,请教我. 使用“父"参数 这些实体之间需要进行交易操作 这些实体之间需要双向引用 强烈的“亲子"关 ..
发布时间:2021-11-16 19:56:55 Python

ndb 建模一对多:重复 KeyProperty 与外键的优点

我的问题是关于在 ndb 中建模一对多关系.我知道这可以通过(至少)两种不同的方式完成:使用重复的属性或使用“外键".我在下面创建了一个小例子.基本上我们有一个可以有任意数量标签的文章.让我们假设一个标签可以被删除,但在添加后不能更改.我们还假设我们不担心交易安全. 我的问题是:建模这些关系的首选方法是什么? 我的考虑: 方法 (A) 需要为每个添加到一个标签的标签写入两次文章( ..
发布时间:2021-11-16 19:56:52 其他开发

ndb to_dict 方法不包含对象的键

我正在利用 ndb 的 to_dict 方法将对象的属性转换为 python dict.据我所知,根据文档,此方法在字典中不包含对象的键或父项: https://developers.google.com/appengine/docs/python/ndb/modelclass#Model_to_dict 但是,对于我的情况,我需要将密钥放在 dict 中.我更喜欢利用内置方法并将其子 ..
发布时间:2021-11-16 19:56:49 Python

谷歌应用引擎 python:如何扩展 ndb 用户类

我正在使用谷歌云端点并希望能够扩展 User 类,以便对 get_current_user 的调用将返回一个 AppUser> 具有我自己的额外属性的对象. class AppUser(--?--): # 我应该在这里放什么gcm = ndb.StringProperty()def send_notification(self):# 用 gcm 做点什么...经过 我怎样才能实现这样的事情?还 ..

在 NDB 中使用 Key 来检索实体

我有这样的结构:有章节的书(祖先=书)有页面(祖先=章) 我很清楚,要按 ID 搜索章节,我需要按祖先查询搜索书.我今天了解到,如果我拥有所有密钥,我可以直接检索实体,而无需先获取书,然后是章节,然后是页面,方式如下: page_key = ndb.Key('Book', long(bookId), 'Chapter', long(chapterId), 'Page', long(page ..
发布时间:2021-11-16 19:56:28 Python

如何删除包含所有子项的实体

我想对数据存储区中的实体进行级联删除.我的意思是所有孩子和间接孩子也将被删除.我最初认为这将是默认行为,但不知何故它不是...... 我的想法是这样的: ndb.delete_multi(ndb.Model.query(ancestor=key).iter(keys_only = True)) 但是Model应该是通配符,因为实体可以是几个类的父类... 我还想在删除实体时删除 B ..
发布时间:2021-11-16 19:56:22 Python

使用投影查询时的 NDB 缓存

找不到之前问过的这个具体问题.在使用投影查询与完整实体查询时,App Engine 的 NDB 如何处理缓存? 例如,如果我先进行投影查询.. MyModel.query().get(projected=['name']) ...然后接下来做一个常规查询... MyModel.query().get() ...我会得到什么?完整的实体?如果是这样,NDB 是否自动缓存了第一个查询的任 ..
发布时间:2021-11-16 19:56:16 Python

在 NDB 中存储关系值的有效方法

我有这个数据模型(我制作了它,所以如果有更好的方法,请告诉我).基本上我有Club,可以有很多Courses.现在我想知道一个俱乐部的所有members 和instructors.members 和 instructors 存储在 Course 模型中,并且 Club 有对它们的引用.看代码.. class 课程(ndb.Model):...讲师键 = ndb.KeyProperty(kind= ..

从数据存储区读取(跨组)实体时发生 TransactionFailedError(争用过多...)

我正在再次调查 TransactionFailedError 的意外发生(这些数据存储实体上的争用过多... 在这种情况下,代码仅读取被归咎于争用问题的实体组. 设置 GAE 标准环境,带有 NDB(SDK 1.9.51)的 Python 2.7.我设法在一个孤立的应用程序(只有我作为用户)中观察到错误,其中在任务队列中执行相同的请求处理程序,并且对下面提到的实体组的读/写访问仅由该处 ..