12得票1回答
ndb.transaction_async()与事务内的异步调用

我正在尝试将我的ndb代码库尽可能地移植到异步模式下,使其更加合理。但是在处理事务时,有一种情况我不太确定应该如何进行: 我看到有3种可用的选项: 选项1:同步调用ndb.transaction(),并使事务函数调用异步方法。 def option_1(): @ndb.taskl...

11得票1回答
何时应该使用ndb.KeyProperty而不是ancestors?

在AppEngine的NDB数据存储中,似乎有两种方法可以将对象相互关联。一种是使用ndb.KeyProperty,另一种是使用父/祖先键。我有点困惑应该在何时使用哪一种? 目前,我一直专门使用KeyProperty,因为它最为熟悉,但我想知道在什么情况下使用这种方式比另一种更合适。

11得票2回答
如何在Google App Engine(Python)中使用AJAX

我对AJAX完全是个新手。我熟悉HTML/CSS,熟练使用jQuery,但在GAE和Python方面还是初学者。 为了理解AJAX的工作原理,我想知道如何在下面的示例中使用AJAX(实际代码)。让我们使用一个类似Reddit的示例,其中投票赞成/反对是通过AJAX进行的: 这是Story种...

11得票3回答
使用ndb批量获取、修改和存储实体的最有效方法

在我的应用程序中,我有一些批操作需要执行。不幸的是,更新400-500个实体有时需要很长时间。我拥有所有实体键,需要获取它们,更新一个属性并将它们保存到数据存储区,保存它们可能需要40-50秒,这不是我想要的。 为了解释我的操作(实际上非常简单),我将简化我的模型:class Entity(n...

11得票1回答
最好是先使用keys_only=True进行查询,然后再使用get_multi,还是直接进行完整的查询?

我正在使用启用线程安全模式的Python 2.7中的NDB。我了解到,使用NDB查询实体不会使用本地缓存或Memcache,而是直接访问数据存储库,与按键名称获取不同。因此,一个很好的范例是只使用keys_only=True进行查询,然后使用get_multi获取完整的实体。这样做的好处是,k...

11得票2回答
使用Python NDB有效实现一对多关系

我想听听您对使用Python NDB有效实现一对多关系的看法。(例如:Person(一)-Tasks(多)) 在我的理解中,有三种实现方式。 使用'parent'参数 使用'repeated'结构化属性 使用'repeated'键属性 通常我会根据下面的逻辑选择一种方式,但是这个逻辑...

11得票4回答
NDB查询datetime字段错误 - Google应用引擎

我遇到一个问题,但是找不到相关的信息。我在我的模型中定义了一个字段,就像这样。class Dates(ndb.model): ... date = ndb.DateTimeProperty(required = True) # I want to store date and ...

10得票1回答
Google App Engine ndb中与modelname_set(反向引用属性)等效的内容

在Google App Engine's NDB中,是否有modelname_set(反向引用属性)的等效项? 在旧的数据库中,Model实体描述了反向引用属性: 反向引用属性的名称默认为modelname_set(使用小写字母表示模型类的名称,并在末尾添加“_set”),可以使用Ref...

10得票1回答
谷歌Appengine NDB祖先查询与关键字查询

我将一个实体的键作为另一个属性存储,以便进行关联。我们目前处于项目重构阶段,所以我考虑引入祖先。这两种方法之间是否有性能差异?如果我们引入祖先,可能会获得什么优势呢?class Book(ndb.Model): ... class Article(ndb.Model): book_k...

10得票1回答
如何知道ndb.Model.get_or_insert创建了一个新实体还是获取了一个现有的实体?

对于以下(有问题的)函数,我想如果实体被创建或更新,返回True,否则返回False。问题在于我不知道 get_or_insert() 是否获取了现有实体还是插入了一个新的实体。有没有一种简单的方法来确定这一点?class MyModel(ndb.Model): def create_...