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

你试过filter('user_name = ', str(user_name))吗?
我假设您确定 user_name 具有预期的内容。

于 2009-11-02T11:12:25.183 回答
0

我想我明白了,我试过用这个,

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

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

于 2009-11-02T11:31:34.177 回答
0

尝试记录repr(user_name)以验证该字符串是否与您所期望的完全相同(并且它不是 unicode 而不是原始的)。也尝试记录表达式user_name == "peter rice"。除此之外,我看不出它不起作用的任何原因 - API 实际上无法影响这一点,因为它不知道您传入的参数来自哪里。

于 2009-11-02T18:44:19.723 回答