GQLQuery получает пустой набор результатов

1

Я запускаю 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-соединение в порядке.

  • 1
    Я надеюсь , что вы не хранить пароли пользователя в виде простого текста в хранилище данных.
  • 0
    Откомандирован. Если возможно, вы должны использовать федеративный вход или аутентификацию аккаунтов Google. Если вы должны хранить учетные данные пользователя, хешируйте пароль пользователя.
Показать ещё 2 комментария
Теги:
google-app-engine
google-cloud-datastore

1 ответ

3
Лучший ответ

Вероятно, это связано с тем, что вы используете TextProperty в своих полях. TextProperty предназначен для многострочных текстов и не индексируется. Вы не можете искать неиндексированные значения в запросе. Вы должны использовать StringProperty для однострочных текстовых значений.

  • 0
    Это действительно было так. Я понятия не имел, Google DataStore работает так. Большое спасибо. Это решило проблему, и сегодня я узнал кое-что новое :-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню