app-engine-ndb相关内容

如何使用 ndb 中重复字符串属性的列表对象进行查询

通过谷歌应用引擎,我使用 ndb 来管理我的数据.我有一个使用重复字符串属性来保存字符串值列表的实体.如何使用等于属性值的列表对象进行查询? 我的意思是,实体是 类问题(ndb.Model):问题 = ndb.StringProperty(required=True)选择 = ndb.StringProperty(重复=真) 我想这样查询: question = "问题"选择 = [“ ..
发布时间:2021-11-16 20:01:16 其他开发

App Engine 数据存储非规范化:主实体或非规范化实体中的索引属性?

考虑博客数据建模的经典示例,其中我们有一个具有许多属性的 Blog 实体,我们希望列出页面中的最新博客. 将 BlogPost 实体非规范化为一个 BlogPostSummary 实体是有意义的,该实体将显示在列表视图中,避免获取和反序列化许多不需要的属性. class BlogPost(db.Model):标题 = db.StringProperty()内容 = db.TextPrope ..

优化 ndb 中两个属性的不等式查询

我正在尝试对有效日期范围进行查询 q = Licence.query(Licence.valid_from 我知道 Datastore 不支持对两个属性的不等式查询.所以我这样做: kl = Licence.query(Licence.valid_from 但我不喜欢,因为我认为从数据存储中检索更多我最终需要的实体(或键)时使用了太多 RAM. 任何机构都知道进行此类查询的更好方 ..
发布时间:2021-11-16 20:01:10 Python

重复 StructuredProperty 中的新实体存储为 _BaseValue

我有一个 HUser 模型(派生自 Google 的 User 类),它又包含 0 到 n 个社交帐户实例.这些帐户可以是对 Facebook、Twitter 或 LinkedIn 帐户的引用.我已经建立了一个 Account 模型,并在我的 User 模型中定义了一个 StructuredProperty 和 repeated=True,就像这样: class Account(ndb.Expa ..

Google App Engine ndb.delete_multi() 的效率如何?

我正在做一些事情来清除我的约 10,000 个实体的数据库,我的计划是将它放入一个任务中,使用 ndb.delete_multi() 一次删除 200 个,然后递归再次调用自身,直到没有实体为止. 目前,我还没有递归,所以我可以手动运行几次代码并检查错误、配额使用等.代码是: entities = MyModel.query_all(ndb.Key('MyModel', '*default ..

自动 NDB 缓存如何工作?

我的网站是电影目录.用户登录后,我会向他/她展示添加到我的数据库中的最新电影: movies = Movies.query()电影 = 电影.order(-Movies. added)电影 = 电影.get(keys_only = True)//get_latest_movie_id 它是否被缓存(电影每周添加到数据库中,所以它应该被缓存)?如何验证(即什么是内存缓存键)?昨天大约有 1000 ..
发布时间:2021-11-16 20:01:01 其他开发

在不从 NDB 检索实体的情况下更新实体的属性

我想更新具有很多属性的实体的属性. 如果我理解正确,每当我通过 从数据存储中检索实体时 entity = key_of_entity.get() 稍后更新它的属性 entity.some_property += 1实体.put() 我需要为读取该实体的每个属性付费?由于该实体具有相当多的属性,因此一遍又一遍地读取可能会非常昂贵.有没有办法更新实体的属性而不必先读取它? 解决方 ..

是否可以将两个字段设置为 ndb 中实体的索引?

我是 ndb 和 gae 的新手,在想出一个很好的解决方案设置索引时遇到了问题.假设我们有一个这样的用户模型: 类用户(ndb.Model):名称 = ndb.StringProperty()电子邮件 = ndb.StringProperty(required = True)fb_id = ndb.StringProperty() 登录后,如果我要通过查询检查电子邮件地址,我相信这会非常缓慢 ..

DataStorage 和查询未实现将 indexed=False 更改为 True

在我的模型中,我有一个设置为 indexed=False 的属性.要在投影中使用它,我必须将其更改为 indexed=True.但令人惊讶的是,现在进行查询不会给出单一结果,总是空的.有什么提示可以重新索引表或为什么结果集为空? https://developers.google.com/appengine/docs/python/ndb/properties#options 解决方案 ..
发布时间:2021-11-16 20:00:47 其他开发

google ndb 中 GeoPt 的奇怪查询比较

我尝试使用 GeoProperty 查询数据存储中的实体,但奇怪的是它会比较 GeoProperty 的第一个参数 lat.如果比较lat,则直接返回结果.唯一的例外是纬度相等,然后比较经度.例如,GeoPt(11, 10) 解决方案 您需要查看 NDB 的一些替代方案来进行空间查询.关于空间数据库的维基百科文章有一个地理数据库,您必须在 AppEngine 之外实施并调用. 或者,您可 ..

获得不同值的最佳方法

我正在使用 Google-Appengine-NDB.我试图从数据库中获取不同的值,但它不起作用. 现在我的代码是:query_set = cls.query().order(cls.ls) # 获取有序查询.set_of_field = set([data.field for data in query_set]) # 并使用此循环进行不同.` 但是循环花费的时间太长(超过 12 秒). ..
发布时间:2021-11-16 20:00:22 其他开发

NDB:对查询结果进行排序

在 App Engine NDB 中,我正在查询具有重复属性的实体.我想按表示该属性的数组的长度对结果进行排序. 我希望我能做什么: Entity.query(...).order(len(Entity.repeatedProp)) 解决方案 您需要将 ndb.IntegerProperty() 添加到您的实体,您将在其中存储重复属性的长度.每次更改重复属性时,都需要更新存储的长度.然 ..