在gql查询中通过参数替换传递字符串时无法获得结果

时间:2009-11-02 11:09:37

标签: python google-app-engine gql gqlquery string-substitution

我能够通过参数替换将字符串变量正确传递给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,请帮助我正确处理我的代码。

3 个答案:

答案 0 :(得分:0)

您是否尝试过filter('user_name = ', str(user_name))? 我想您确定用户名具有预期的内容。

答案 1 :(得分:0)

我想我已经得到了它,我尝试使用它,

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

我得到了预期的结果集。我想知道为什么其他格式在字符串替换中存在问题。

答案 2 :(得分:0)

尝试记录repr(user_name)以验证字符串与您期望的字符串完全相同(并且它不是unicode而不是raw)。还要尝试记录表达式user_name == "peter rice"。除此之外,我看不出它为什么不起作用的任何理由 - API实际上没有办法影响这一点,因为它不知道你传递的参数来自哪里。