Impossible d'obtenir des résultats lors du passage d'une chaîne par substitution de paramètres dans la requête gql

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

Question

Je suis en mesure de passer correctement une variable de chaîne à la GqlQuery par substitution de paramètres, voici le code que j'ai essayé d'utiliser;

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

Je ne reçois aucun résultat et la requête échoue en silence. Mais quand je code dur la requête comme ceci,

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

Je reçois mon resultset attendu. Je pense que je passe la user_name variable dans une mauvaise direction, S'il vous plaît me aider à obtenir mon morceau de bon code.

Était-ce utile?

La solution 2

Je pense que je l'ai, j'essayé d'utiliser cela,

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

et je suis le ResultSet attendu. Je me demande pourquoi d'autres formats ont le problème en remplacement de chaîne.

Autres conseils

Avez-vous essayé filter('user_name = ', str(user_name))?
Je suppose que vous êtes sûr user_name a le contenu attendu.

Essayez de vous connecter repr(user_name) pour vérifier que la chaîne est exactement la même chose que ce que vous vous attendez (et qu'il est unicode pas plutôt que brutes). Essayez également vous connecter l'expression user_name == "peter rice". A part cela, je ne vois aucune raison pour laquelle cela ne fonctionnerait pas - il n'y a littéralement aucun moyen de l'API peut affecter cela, car il ne sait pas où l'argument que vous passez vient de

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top