Unfähig, um Ergebnisse zu erhalten, wenn eine Zeichenfolge über den Parameter Substitution in gql Abfrage vorbei
-
11-09-2019 - |
Frage
Ich bin in der Lage, um richtig einen String-Variable auf den GqlQuery durch Parameter Substitution zu passieren, hier ist der Code, den ich habe versucht, zu verwenden;
user_name = self.request.get('username') #retrieved from UI
p = models.UserDetails.all().filter('user_name = ', user_name).fetch(1)
Ich erhalte keine Ergebnisse, und die Abfrage nicht still. Aber wenn ich hart, um die Abfrage wie folgt codieren,
p = models.UserDetails.all().filter('user_name = ', "peter rice").fetch(1)
ich mein erwartetes resultset. Ich denke, dass ich die Variable user_name
in einer falschen Weise bin vorbei, Bitte helfen Sie mir in meinem Stück Code richtig hinzubekommen.
Lösung 2
Ich glaube, ich habe es habe, habe ich versucht, mit dieser,
p = models.UserDetails.gql('WHERE user_name = :uname', uname = user_name).fetch(1)
, und ich bekam die erwartete Suchresultates. Ich frage mich, warum andere Formate das Problem in String-Ersetzung haben.
Andere Tipps
Haben Sie versucht, filter('user_name = ', str(user_name))
?
Ich nehme an, Sie sind sicher, dass user_name den erwarteten Inhalt hat.
Versuchen repr(user_name)
Anmeldung zu überprüfen, ob die Zeichenfolge genau das gleiche wie das, was Sie erwarten (und dass es Unicode ist nicht eher als roh). Versuchen Sie auch den Ausdruck user_name == "peter rice"
anzumelden. Other than that, kann ich keinen Grund sehen, warum es nicht funktionieren würde - es gibt buchstäblich keine Möglichkeit, die API diese beeinflussen kann, da sie nicht weiß, wo das Argument übergeben Sie in herkommt