GQLQuery检索空结果集

时间:2011-11-07 13:29:49

标签: python google-app-engine google-cloud-datastore

我正在运行GQLQuery来查找用户是否输入了正确的凭据:

class User(db.Model):
    UserName = db.TextProperty();
    Password = db.TextProperty();
    Ticket = db.TextProperty();

class Authentication(webapp.RequestHandler):
    def post(self):
        str_user = self.request.get('user')
        str_password = self.request.get('password')
        user = db.GqlQuery("SELECT * FROM User WHERE UserName = :1 AND Password = :2",str_user, str_password)
        self.response.out.write(str_user)
        self.response.out.write(str_password)
        self.response.out.write(str([u.UserName for u in user]))

        if user.count() > 0:
            ticket = str(uuid.uuid4())
            user.Ticket = ticket
            self.response.out.write(ticket)
        else:
            self.response.out.write('Not authorized!')

查询总是返回一个空的结果集(使用" WHERE" -clause),但我确信我已经传递了正确的参数。

我试图连接自己的查询字符串但结果仍然相同。如果我删除" WHERE" -clause我得到了db的所有用户,所以我猜数据库连接没问题。

1 个答案:

答案 0 :(得分:3)

这可能是因为您在字段上使用TextPropertyTextProperty用于多行文本,未编入索引。您无法在查询中查找非索引值。您应该使用StringProperty作为单行文字值。