GQL 쿼리에서 매개 변수 대체를 통해 문자열을 전달할 때 결과를 얻을 수 없습니다.
-
11-09-2019 - |
문제
매개 변수 대체를 통해 문자열 변수를 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
잘못된 방식으로 코드를 올바르게 얻는 데 도움을주십시오.
해결책 2
나는 그것을 가지고 있다고 생각한다. 나는 이것을 사용했다.
p = models.UserDetails.gql('WHERE user_name = :uname', uname = user_name).fetch(1)
그리고 기대 결과 세트를 얻었습니다. 다른 형식이 왜 문자열 대체에 문제가 있는지 궁금합니다.
다른 팁
당신은 시도 했습니까? filter('user_name = ', str(user_name))
?
user_name에 예상 컨텐츠가 있다고 확신합니다.
로깅을 시도하십시오 repr(user_name)
문자열이 당신이 기대하는 것과 정확히 동일하다는 것을 확인하기 위해서 (그리고 그것이 원시가 아닌 유니 코드가 아님) 또한 표현식을 기록해보십시오 user_name == "peter rice"
. 그 외에는 그것이 작동하지 않는 이유를 알 수 없습니다. 문자 그대로 API가 영향을 줄 수있는 방법은 없습니다.
제휴하지 않습니다 StackOverflow