gpt4 book ai didi

python - 在 Google App Engine 中使用嵌套 AND/OR 进行祖先查询

转载 作者:行者123 更新时间:2023-12-01 05:56:15 26 4
gpt4 key购买 nike

我正在使用 Google App Engine NDB,并尝试执行以下查询:

query = Club.query(ndb.OR(
ndb.AND(Club.memberIds == userId, Club.modifiedDate > date),
ndb.AND(Club.activityDate > date, ancestor = userKey)
))

但是,我收到运行时错误:

TypeError: __new__() got an unexpected keyword argument 'ancestor'

这和祖先的地位有关。 This answer能够指出一种情况的解决方案,但该解决方案不适用于此处,因为祖先位于实际的 AND 子句中。

  1. 如何重新设置此查询的格式才能正常工作?
  2. 这个查询是不是一个坏主意?是不是太复杂了?由于其复杂性,我会比平常花费更多的阅读时间吗?

最佳答案

您不能使用祖先作为过滤器的一部分;它必须是直接在 query() 调用上的关键字参数。目前,OR 查询无论如何都会变成多个查询,因此 OR() 方法给您带来的唯一好处是更容易组合结果。但要实现这一点,无论如何你都必须按键排序,并且编写一个小合并函数来合并按键排序的两组查询结果是很简单的。 (也可以通过调用 ndb.query._MultiQuery() 来完成此操作,但后者不是记录在案的 API,而且很难正确执行,因此最好自己执行此操作。)

关于python - 在 Google App Engine 中使用嵌套 AND/OR 进行祖先查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12498770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com