0

パラメータ置換を使用して、文字列変数を 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。コードを正しく取得するのを手伝ってください。

4

3 に答える 3

0

わかったと思い、これを使ってみたのですが、

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

そして、期待される結果セットを取得しました。他の形式で文字列の置換に問題があるのはなぜだろうか。

于 2009-11-02T11:31:34.177 に答える
0

試しましたfilter('user_name = ', str(user_name))か?
user_name に期待されるコンテンツがあると確信していると思います。

于 2009-11-02T11:12:25.183 に答える
0

ログrepr(user_name)を記録して、文字列が期待どおりであることを確認してください (また、生ではなく Unicode ではないことも確認してください)。また、式をログに記録してみてくださいuser_name == "peter rice"。それ以外に、それが機能しない理由はわかりません。渡された引数がどこから来たのか分からないため、API がこれに影響を与える方法は文字通りありません。

于 2009-11-02T18:44:19.723 に答える