Não é possível obter resultados ao passar uma corda através do parâmetro de substituição em gql consulta
-
11-09-2019 - |
Pergunta
Eu sou capaz de passar corretamente uma variável string para o GqlQuery através de substituição de parâmetros, aqui está o código que eu tentei usar;
user_name = self.request.get('username') #retrieved from UI
p = models.UserDetails.all().filter('user_name = ', user_name).fetch(1)
Eu não obter quaisquer resultados ea consulta falha silenciosamente. Mas quando eu codificar a consulta como esta,
p = models.UserDetails.all().filter('user_name = ', "peter rice").fetch(1)
Eu recebo o meu conjunto de resultados esperados. Eu acho que eu estou passando a variável user_name
de uma maneira errada, por favor, me ajudar na obtenção de meu pedaço de direito código.
Solução 2
Eu acho que eu tenho, eu tentei usar isso,
p = models.UserDetails.gql('WHERE user_name = :uname', uname = user_name).fetch(1)
e eu tenho o conjunto de resultados esperados. Eu me pergunto por outros formatos têm o problema em substituição string.
Outras dicas
Você já tentou filter('user_name = ', str(user_name))
Eu suponho que você tem certeza user_name tem o conteúdo esperado.
Tente fazer login repr(user_name)
para verificar se a string é exatamente o mesmo que o que você está esperando (e que não é unicode ao invés de cru). Além disso, tente registrar o user_name == "peter rice"
expressão. Fora isso, eu não consigo ver nenhuma razão por que ele não iria funcionar - não há literalmente nenhuma maneira que a API pode afetar isso, uma vez que não sabe onde está o argumento que transmite em vem de