什么是 GQL 查询 Return

What does a GQL Query Return

我一直在使用 Google App Engine 开发一个项目。我一直在设置用户,必须检查用户名是否已被使用。
我用下面的代码尝试测试是否被采纳

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

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

对于初学者,您应该重新访问文档 https://cloud.google.com/appengine/docs/python/datastore/gqlqueryclass?hl=en

db.GqlQuery('select username from User') 正在调用构造函数而不是函数,因此它 returns 是 GqlQuery 对象的实例。请参阅上面提到的文档。

其次,由于最终一致性,您正在做的事情永远不会可靠地工作。请阅读 https://cloud.google.com/appengine/docs/python/datastore/structuring_for_strong_consistency 以了解原因。

最后,您是从 Appengine 开始的,因此请远离 db 并使用 ndb,除非您拥有重要的现有代码库。