Impossibile ottenere risultati quando passando una stringa tramite sostituzione dei parametri nella query GQL
-
11-09-2019 - |
Domanda
Sono in grado di trasmettere correttamente una variabile stringa al gqlquery attraverso la sostituzione dei parametri, ecco il codice che ho provato ad utilizzare;
user_name = self.request.get('username') #retrieved from UI
p = models.UserDetails.all().filter('user_name = ', user_name).fetch(1)
Non ottengo alcun risultato e la query ha esito negativo in silenzio. Ma quando ho codificare la query come questa,
p = models.UserDetails.all().filter('user_name = ', "peter rice").fetch(1)
ho il mio gruppo di risultati attesi. Penso che sto passando il user_name
variabile in un modo sbagliato, per favore mi aiuti a ottenere il mio pezzo di codice corretto.
Soluzione 2
Credo di aver capito, ho provato ad utilizzare questo,
p = models.UserDetails.gql('WHERE user_name = :uname', uname = user_name).fetch(1)
e ho avuto il gruppo di risultati attesi. Mi chiedo perché gli altri formati hanno il problema in sostituzione di stringhe.
Altri suggerimenti
Hai provato filter('user_name = ', str(user_name))
?
Suppongo che si è sicuri nome_utente ha il contenuto previsto.
Provare ad accedere repr(user_name)
per verificare che la stringa è esattamente lo stesso di quello che ti aspetti (e che non è unicode piuttosto che cruda). Anche provare ad accedere alla user_name == "peter rice"
espressione. Oltre a questo, non vedo alcuna ragione per cui non avrebbe funzionato - non c'è letteralmente alcun modo l'API può influire su questo, dal momento che non sa dove l'argomento si passa proviene da