python 的 Google 应用引擎中的 Expando 属性的自动索引

发布于 2024-10-14 03:12:54 字数 329 浏览 6 评论 0原文

google app engine python sdk 提供了 Expando 类型对象,可用于向可持久保存到数据存储的对象添加动态属性。

应用程序引擎还要求,对于需要搜索或排序对象的任何属性,必须在将应用程序上传到谷歌服务器之前创建索引。这真的很奇怪,因为这意味着我应该事先知道我的用户将在我的对象上创建哪些属性。如果我事先知道这一点,为什么我不在现有模型中将它们定义为静态属性?

有谁知道如何在上传到应用程序引擎后自动为 Expando 模型的动态属性创建索引?如果没有,谁能告诉我为什么 gae 将 Expando 作为动态构造,因为它不允许您创建可搜索或排序的新属性,而只能创建不可搜索或可排序的属性。

The google app engine python sdk offers an Expando type object which can be used for adding dynamic properties to an object that can be persisted to the datastore.

The app engine also requires that for any property on which the objects need to be searched or sorted, an index must be created before uploading the app to google's servers. This is really strange because it means that i am supposed to know before hand what properties my users will create on my objects. If i knew that in advance, why would i not define them as static properties in my existing model?

Does anyone know how to automatically create indexes for dynamic properties of Expando models after uploading to the app engine? If not, can anyone tell me why does the gae tout Expando as dynamic construct when it can not let you create new properties that can be searched on or sorted by, only properties that arent searchable or sortable.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼泪淡了忧伤 2024-10-21 03:12:54

所有属性都会自动索引以进行简单查询。在本例中,简单查询是指:

  1. 仅使用等式过滤器,不使用排序顺序或不等式过滤器。
  2. 在单个字段上有不等式过滤器或排序顺序,没有其他过滤器。

如果您想做更复杂的查询 - 例如混合不等式和等式过滤器的查询,那么您才需要构建自定义索引。

无法在运行时构建自定义索引。如果您想使用 Expandos,则需要确保将执行的查询限制为在上述情况之一下可满足的查询。

All properties are automatically indexed for simple queries. Simple queries, in this case, are those that either:

  1. Use only equality filters, with no sort orders or inequality filters.
  2. Have an inequality filter or sort order on a single field, with no other filters.

If you want to do more complex queries - such as ones that mix inequality and equality filters, only then do you need to build a custom index.

It's not possible to build custom indexes at runtime. If you want to use expandos, you need to make sure that you restrict the queries you execute to those that are satisfiable under one of the situations above.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文