- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在做一个项目,我需要按降序执行 ndb.OR 操作,但是对于下面的代码,我收到这样的错误:
BadRequestError:第一个排序属性必须与应用不等式过滤器的属性相同。在您的查询中,第一个排序属性是 TestNo 但不等式过滤器在 Math 上
class StudentMarks(ndb.Model):
Math = ndb.IntegerProperty()
Science = ndb.IntegerProperty()
English = ndb.IntegerProperty()
Social = ndb.IntegerProperty()
TestNo = ndb.IntegerProperty()
@classmethod
def queryData(cls):
return cls.query(ndb.OR(ndb.OR(cls.Math > 0, cls.Science > 0),
ndb.OR(cls.English > 0 , cls.Social > 0))).order(-cls.TestNo)
有没有其他方法可以实现这个方法。
最佳答案
在不了解您的用例的情况下,我可以想出两种方法。
TestNo > -1
)和 OR 作为 AND 子句的第二部分。另一种方法可能是更改或添加存储的数据,以便您可以使用相等过滤器。您似乎正在寻找值大于 0 的数学、科学、英语等的各种组合。考虑添加一个 ComputedProperty,它存储数学、科学等的 bool 值 true > 0,如果 == 0 则为 false ,那么您可以将查询重写为像下面这样的东西。 (我正在为计算属性使用像 hasMath 这样的属性名称)
计算属性看起来像
hasMath = ndb.ComputedProperty(lambda self: self.Math > 0)
查询将是
cls.query(ndb.OR(ndb.OR(cls.hasMath == True, cls.hasScience == True),
ndb.OR(cls.hasEnglish == True , cls.hasSocial == True))).order(-cls.TestNo)
进一步查看您的查询,您可以将计算属性减少为单个属性以满足您的查询要求。
hasClass = ndb.ComputedProperty(lambda self: self.Math > 0 or self.Science > 0 or self.English > 0 or self.Social > 0)
您的查询将是
cls.query(cls.hasClass == True).order(-cls.TestNo)
假设这是您要执行的唯一此类查询,最后一个选项将是性能最佳且索引成本最低的选项。
关于google-app-engine - 谷歌应用引擎中的ndb.OR操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20112695/
如果我有一个具有以下定义的Contact 模型: class Contact(ndb.Model): name = ndb.TextProperty(indexed=False) we
我有 webapp2 服务,它在多个不相互依赖的 NDB 模型中插入条目。现在我们要求的是服务应该在事务中。那是服务失败然后它应该恢复完整的交易(例如,如果一个条目插入到第一个和第二个模型中,并且在该
切换到 python GAE 上的 ndb 库。 我可以将 ndb 与之前使用低级 api 创建的实体一起使用吗?还是我必须复制所有旧实体并重新保存它们才能使用 ndb? 谢谢! 最佳答案 ndb 只
是否可以在 pre_put_hook 中找出实体的脏因子? 我想根据put 的内容有条件地执行一些回调。例如。如果实体的特定属性发生更改,我想发送邮件通知。我可以在调用 put() 之前手动执行此操作
我是谷歌应用引擎和 NDB 的初学者。我的问题:如果我在模型中有 1 个实体, 我想防止 2 个并行操作时发生冲突,代码示例: class MyModel(ndb.Model) count = n
假设有一个看起来像这样的 ndb.Model: class Foo(ndb.Model): bar = ndb.StringProperty() 我的问题是,如果我的唯一输入是 Foo.query
给定我构造的 key ,我想访问数据存储区以查看它是否存在,但我想要最便宜(及时)的方法来做到这一点。我正在寻找的就像一个只有键的查询,但是来自 get,例如my_key.get(keys_only=
https://developers.google.com/appengine/docs/python/ndb/ https://developers.google.com/appengine/doc
我有一个 ndb.Model,它有一个 ndb.DateTimeProperty 和一个 ndb.CompulatedProperty,它使用 ndb.DateTimeProperty 创建时间戳。
我计划将 Odoo 移植到 Google App Engine Web 应用程序。当我知道 Odoo 使用 postgresql 时,是否可以将数据库连接、查询和所有从 Postgresql db 移
我有一个 POST 方法,它调用一些 tasklet。这些 tasklet 确实有 yield ,我的代码中确实有一些 x.put_async()。所以我不希望它在所有异步内容完成之前返回。所以我用
我有一个简单的 NDB 模型: from google.appengine.ext import ndb import logging from libs import Api class User(
使用 Python NDB 的新手。 我有类似的东西: class User(ndb.Model): seen_list = nbd.KeyProperty(kind=Survey, repe
我的应用程序中有以下查询 query = cls.query().filter(cls.taskgroup_id == taskgroup_id, cls.availability == True,
我在 NDB 迁移方面遇到问题。目前,我在 NDB Cluster 中有 2 个副本。我想将集群移至新硬件中。因此,在新机器中,我设置了 datanodes 和 sqlnodes 并将管理节点指向旧集
我有一个 mysql ndb 集群(详情如下)。问题是当我做最简单的事情时,例如恢复使用 mysqldump 转储的数据库,它需要绝对的时间! IE 6 小时恢复一个大小为 745MB 且在大约 30
来自 What can be done in a transaction (我的重点): All Datastore operations in a transaction must operate
我正在对 Expense 模型的方法进行单元测试。模型的相关部分如下所示: class Expense(ndb.Model): user = ndb.KeyProperty(User, req
几年来,我一直在使用类似于下面复制的代码片段。 基本思想是 Person 可以结婚,当他们结婚时,我创建一个“Marriage”实体。一个人只能结婚一次,所以我有一个 bool 值来指示这个人是否已婚
我们使用的是 ndb 数据存储、python、标准谷歌应用引擎。我们想使用查询游标。但是为了根据 here 工作和 here ,看起来我们需要实现 datastore_model.query().or
我是一名优秀的程序员,十分优秀!