Не удается получить результаты при передаче строки с помощью подстановки параметров в запросе gql

StackOverflow https://stackoverflow.com/questions/1660640

Вопрос

Я могу правильно передать строковую переменную в gqlquery с помощью подстановки параметров, вот код, который я пытался использовать;

user_name = self.request.get('username') #retrieved from UI
p = models.UserDetails.all().filter('user_name = ', user_name).fetch(1)

Я не получаю никаких результатов, и запрос завершается безрезультатно.Но когда я жестко кодирую запрос следующим образом ,

p = models.UserDetails.all().filter('user_name = ', "peter rice").fetch(1)

Я получаю свой ожидаемый набор результатов.Я думаю, что я передаю переменную user_name если я ошибаюсь, пожалуйста, помогите мне исправить мой фрагмент кода.

Это было полезно?

Решение 2

Я думаю, у меня получилось, я пробовал использовать это,

p = models.UserDetails.gql('WHERE user_name = :uname', uname = user_name).fetch(1)

и я получил ожидаемый набор результатов.Интересно, почему в других форматах возникает проблема с подстановкой строк.

Другие советы

Вы пробовали filter('user_name = ', str(user_name)) ?
Я полагаю, вы уверены, что имя_пользователя имеет ожидаемое содержимое.

Попробуйте войти в систему repr(user_name) чтобы убедиться, что строка в точности совпадает с тем, что вы ожидаете (и что это не юникод, а не raw).Также попробуйте записать выражение в журнал user_name == "peter rice".Кроме этого, я не вижу никаких причин, по которым это не сработало бы - API буквально никак не может повлиять на это, поскольку он не знает, откуда берется аргумент, который вы передаете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top