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