GQL查询返回什么

时间:2015-10-10 23:12:54

标签: python google-app-engine gql

我一直在使用Google App Engine开展项目。我一直在设置用户,并且必须检查是否已经使用了用户名。
我使用以下代码来测试是否采用

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

这从未捕获重复的用户名。我在GQL查询行上尝试了一些这方面的变种。我尝试使用.get()导致错误,因为它返回了一些不可迭代的东西。我还尝试在请求周围放置list(),这会返回相同的错误。我尝试写usernames的值,但从未得到任何回应。如果它返回一个查询实例,那么有没有办法把它变成一个列表或元组?

1 个答案:

答案 0 :(得分: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,除非您拥有重要的现有代码库。