2009-11-02 36 views
0

我能夠通過參數替換將字符串變量正確傳遞給gqlquery,下面是我嘗試使用的代碼;當通過gql查詢中的參數替換傳遞字符串時無法獲得結果

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,請幫助我獲得我的一段代碼。

+0

P.S.我從Nick Johnson的帖子瞭解到字符串替換非常危險,所以我沒有試一試。 – Arun 2009-11-02 11:12:59

回答

0

我想我,我試圖用這個,

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

得到它,我得到了預期的結果集。我想知道爲什麼其他格式在字符串替換中存在問題。

0

你試過filter('user_name = ', str(user_name))
我相信你確定user_name具有預期的內容。

+0

是的,我也試過。 – Arun 2009-11-02 11:28:19

0

嘗試記錄repr(user_name)以驗證該字符串與您所期望的完全相同(並且它不是unicode而不是raw)。還可以嘗試記錄表達式user_name == "peter rice"。除此之外,我不明白爲什麼它不起作用 - 沒有辦法API可以影響這個,因爲它不知道你傳入的參數來自哪裏。

相關問題