在谷歌AppEngine上,您可以通過查詢像GQL獲得ID字段
select __key__ from furniture
檢索散列鍵值但AppEngine上的數據存儲保持一個很好的自動遞增場ID爲每一種。
如何從查詢訪問它?
select ID from furniture
不工作
在谷歌AppEngine上,您可以通過查詢像GQL獲得ID字段
select __key__ from furniture
檢索散列鍵值但AppEngine上的數據存儲保持一個很好的自動遞增場ID爲每一種。
如何從查詢訪問它?
select ID from furniture
不工作
我相信GCL查詢不能包含調用存取方法或屬性提取(多,在同樣的事實,它只能做"SELECT * FROM"
獲取整個實體或"SELECT __key__ FROM"
只取鑰匙 - 它不能挑選領域,如[假設! - )] "SELECT this, that FROM
「)
所以,你需要獲取密鑰,然後調用每個鍵的.id()
訪問(如果您想None
鑰匙。沒有ID而是名稱;使用.id_or_name()
如果您希望獲得該名稱(如果可用),並且None
僅作爲最後的手段)。例如,要得到唯一的非無標識:
thekeys = db.GqlQuery('SELECT __key__ FROM Whatever').fetch(1000)
theids = [k.id() for k in thekeys if k.id() is not None]
絕對正確,除了條件應該是「如果k.has_id()」 - 或者省略它並使用「k.id_or_name()」。 –
@尼克,謝謝! 'has_id'沒有記錄在http://code.google.com/appengine/docs/python/datastore/keyclass.html,所以我不願意使用它或建議其他人使用它 - 如果這是一個文檔錯誤,當然,我會很樂意在跟蹤器中打開它並且/或者幫助它適應20%的時間;-)。 –
,你也可以嘗試
entity.key().id()
它的作品完美的分類和甜美sloution感謝很多.. –
我不知道它在那裏回來然後當你問這個問題,但現在它是相當很容易通過id檢索實體。
YourModel.get_by_id (int(ids))
您可以在文檔中閱讀更多關於它在這裏:https://developers.google.com/appengine/docs/python/datastore/modelclass#Model_get_by_id
的ID是不是「自動增量」。他們保證在單一類型和實體羣體中是唯一的,但他們不可能是連續的,也不能保證會增加。 (在開發服務器上,它們是連續的)。 – geoffspear