GQL 쿼리에서 매개 변수 대체를 통해 문자열을 전달할 때 결과를 얻을 수 없습니다.

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

문제

매개 변수 대체를 통해 문자열 변수를 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가 영향을 줄 수있는 방법은 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top