2015-10-10 108 views
0

我一直在使用Google App Engine開展一個項目。我一直在設置用戶,並且必須檢查用戶名是否被佔用。
我用下面的代碼來嘗試測試它是否被採納與否什麼是GQL查詢返回

usernames = db.GqlQuery('select username from User') 
taken = username in usernames 

這從來沒有抓到重複的用戶名。我在GQL查詢行上嘗試了一些這樣的變體。我嘗試使用.get(),它導致了一個錯誤,因爲它返回了不可迭代的東西。我也嘗試在請求周圍放置list(),該請求返回了相同的錯誤。我試圖寫usernames的價值,但從來沒有得到任何迴應。如果它返回一個查詢實例,那麼有沒有辦法將它變成一個列表或元組?

回答

1

對於初學者來說,你應該重新審視文檔https://cloud.google.com/appengine/docs/python/datastore/gqlqueryclass?hl=en

db.GqlQuery('select username from User')被調用構造函數不是一個功能,所以它返回一個GqlQuery對象的實例。請參閱上述文檔。

其次,你正在做的事情永遠不會可靠地工作,因爲最終的一致性。請閱讀https://cloud.google.com/appengine/docs/python/datastore/structuring_for_strong_consistency瞭解原因。

最後,你是從appengine開始,所以從db開始,並使用ndb,除非你有一個重要的現有代碼庫。