2015-10-10 68 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,除非你有一个重要的现有代码库。