0

我遇到了一個問題,這可能是我不瞭解GQL如何工作的結果(這是我的第一天)。我正在使用google.appengine.ext.db數據存儲在Google AppEngine(本地現在)上工作。在Google AppEngine上使用Python進行簡單的數據存儲/檢索

我只是創建一個具有特定ID的用戶,然後嘗試通過過濾來檢索它,只包含具有此ID的記錄。當我嘗試這樣做時,它不會返回任何內容,但是當我全部獲得時,逐個迭代並比較這些ID,就會找到記錄。這裏肯定有一些愚蠢的錯誤,我沒有看到。這裏是代碼:

def datastore_key(): 
    return db.Key.from_path('MyUsers', 'all') 

class MyUser(db.Model): 
    my_id = db.TextProperty() 


[...] 

user = MyUser(parent=datastore_key()) 
user.my_id = "7wjew1" 
user.put() 

users = MyUser.all() 
users.ancestor(datastore_key()) 
users.filter("my_id = ", "7wjew1") # WTF - why isn't this working??? 
print users[0] # is None, users list is empty 

# now, let's get all users 
users = MyUser.all() 
users.ancestor(datastore_key()) 
# and iterate through the list to check for ids 
for user in users: 
    if user.linkedin_id == user_id: 
     print "ids are the same" 
     # surprise, it prints the "ids are the same" - wtf? 
+1

好吧我想有時候寫一個問題是很好的,這樣你就可以立刻想出一個答案。我將TextProperty更改爲StringProperty,它工作:) – michuk

回答

1

好吧我猜這有時是好的寫一個問題,讓你馬上想出一個答案。我將TextProperty更改爲StringProperty,它工作:)

+0

如果你想知道,這是因爲'TextProperty'是爲大文本blob,並沒有索引。如果您嘗試過濾不存在​​或未指定的屬性,那麼'filter()'方法不會出錯,它只是不返回任何內容。 –

相關問題