我一直在使用Google App Engine开展项目。我一直在设置用户,并且必须检查是否已经使用了用户名。
我使用以下代码来测试是否采用
usernames = db.GqlQuery('select username from User')
taken = username in usernames
这从未捕获重复的用户名。我在GQL查询行上尝试了一些这方面的变种。我尝试使用.get()
导致错误,因为它返回了一些不可迭代的东西。我还尝试在请求周围放置list()
,这会返回相同的错误。我尝试写usernames
的值,但从未得到任何回应。如果它返回一个查询实例,那么有没有办法把它变成一个列表或元组?
答案 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
,除非您拥有重要的现有代码库。