1
我需要更改条目的值,但以下代码不起作用。在GQL中更改数据
logList = db.GqlQuery("SELECT * FROM Log ORDER BY date DESC LIMIT 1")
logList[0].content = "some text"
db.put(logList)
当我运行这个时,最新元素的值不会改变。我检查与打印输出,它给出正确的值(什么内容字段应该改变&正确的旧值),并给出了下面的状态代码:
Status: 302 Moved Temporarily
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache
Location: http://localhost:8080/admin/editl
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Length: 0
什么是错我的代码? The used method of altering data在官方文档中提及。
实际上,您可以使用迭代器接口访问结果。此外,当指定了“LIMIT”子句时,“结果将与等效的'fetch()'方法一起检索出来。” (参考:[GqlQuery文档](http://code.google.com/appengine/docs/python/datastore/gqlqueryclass.html#Introduction)) – 2010-09-27 19:09:07
@David,他没有使用迭代器接口;他直接访问可疑阵列的元素。我不知道LIMIT = fetch()位,但如果我是他,我会尝试我所建议的,因为我认为他的代码对我来说有点嫌疑。如果他尝试了,它不起作用,我会提供一个奖励。 – 2010-09-27 19:14:41
你的建议绝对有效(+1):)。我猜这个文档意味着以相同的方式检索结果,但不会以这种方式返回(即结果仍然是可迭代的)。看起来像他在文档中引用的页面需要更新 - 这绝对似乎表明他的方法应该工作。我怀疑他的代码中的'db.put(logList)'只是重新检索这些实体,因此这只是保存了一个新获取的,未更改的副本。 – 2010-09-27 19:21:32