【问题标题】:GqlQuery and IDGqlQuery 和 ID
【发布时间】:2011-05-17 22:46:01
【问题描述】:

我尝试构建 GqlQuery 并通过指定 ID 获取实体,但我收到错误“IndexError:查询返回的结果少于 1 个”。 DataStore 不为空。在数据存储查看器中,我找到了必要的 ID。 我的代码放在下面:

从 google.appengine.ext 导入数据库 from models.models 导入新闻

news = News.gql("WHERE id = 4265")

打印新闻[0].title


我知道 get_by_id 方法,由于某些原因它不满意。但是英语对我来说不是母语,因此我不明白如何正确使用 Key.from_path。

【问题讨论】:

  • 除此之外我几乎没有尝试过。但是,我仍然得到同样的错误。下面是我的新代码: k = db.Key.from_path('News', 4264) news = db.GqlQuery("SELECT * FROM News WHERE key =:1", k) news[0].title
  • 你有一些非常基本的错误,你应该熟悉GQL和各种handy methods on Model

标签: google-app-engine google-cloud-datastore gql gqlquery


【解决方案1】:

试试:

news = News.get_by_id(4265)
if news is not None: 
  print news.title

或者如果你必须使用 GQL,

news = News.get(db.Key.from_path('News', 4265))
...

【讨论】:

    【解决方案2】:

    你为什么要写一个Gql查询,当你可以使用模型类的get_by_id()方法时。

    注意: id 可以在 python 中通过 object.Key().id() 从对象中获取,在模板中您只需调用 object.key.id

    news = News.get_by_id(4265)
    

    或者您可以使用db.Key.from_path 获取密钥并将其传递给 get() 方法。

    new = News.get(db.Key.from_path('News', 4265))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多