Невозможно получить результаты при передаче строки с помощью подстановки параметров в запросе gql - PullRequest
0 голосов
/ 02 ноября 2009

Я могу правильно передать строковую переменную в 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 неверным образом. Пожалуйста, помогите мне получить правильный фрагмент кода.

Ответы [ 3 ]

0 голосов
/ 02 ноября 2009

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

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

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

0 голосов
/ 02 ноября 2009

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

0 голосов
/ 02 ноября 2009

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

...