Я запускаю 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, поэтому я думаю, что db-соединение в порядке.
Вероятно, это связано с тем, что вы используете TextProperty
в своих полях. TextProperty
предназначен для многострочных текстов и не индексируется. Вы не можете искать неиндексированные значения в запросе. Вы должны использовать StringProperty
для однострочных текстовых значений.