【问题标题】:How to check null value for UserProperty in Google App Engine如何在 Google App Engine 中检查 UserProperty 的空值
【发布时间】:2009-08-09 20:29:00
【问题描述】:

在 Google App Engine 的数据存储建模中,我想问一下如何检查 UserProperty 类的属性的空值? 例如: 我有这个代码:

class Entry(db.Model):
  title = db.StringProperty()
  description = db.StringProperty()
  author = db.UserProperty()
  editor = db.UserProperty()
  creationdate = db.DateTimeProperty()

当我想检查那些编辑器不为空的条目时,我不能使用这种GqlQuery

query = db.GqlQuery("SELECT * FROM Entry " +
                    "WHERE editor IS NOT NULL" +
                                    "ORDER BY creationdate DESC")
    entries = query.fetch(5)

我想知道是否有任何方法可以使用 UserProperty 检查变量是否存在? 谢谢!

【问题讨论】:

  • 您能否再澄清一下您的代码?

标签: python google-app-engine google-cloud-datastore


【解决方案1】:
query = db.GqlQuery("SELECT * FROM Entry WHERE editor > :1",None)

但是,您不能 ORDER BY 一个列 并且 在另一列上存在不等式条件:这是众所周知的 GAE 限制,与作为 UserProperty 的属性无关,也与你正在做的不等式检查没有。

编辑:我之前有一个 !=,但正如@Nick 指出的那样,任何 != None 都是 > None,并且 > 在 GAE 上的速度大约是两倍(因为 != 是合成的 的联合),所以在这里使用 > 是一个值得优化的地方。

【讨论】:

  • 在这种情况下,“WHERE editor > :1”会是一个更好的选择——一个!=查询被翻译成两个查询——一个用于小于,一个用于大于。由于没有什么比 None 少,因此跳过它是有意义的。
  • @Hoang,总是乐于提供帮助,但请记住接受能解决您问题的答案——这是基本的 SO 礼仪!
  • 嗨,对不起,伙计们,我是 stackoverflow 的新手 :D 19 天前刚尝试使用这个网站,有两个问题 ;) 它真的很有帮助 ;)
猜你喜欢
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 2011-09-23
  • 1970-01-01
  • 2018-03-09
相关资源
最近更新 更多