2013-06-18 64 views
0

我試圖將我的數據存儲查詢的結果提取到Python中的列表。然後,我想是這樣:如何將查詢結果提取到列表中?

foo = db.GqlQuery("SELECT url FROM Ads").run() 

foo = db.GqlQuery("SELECT url FROM Ads").fetch(10) 

但無論有沒有運氣 - foo是隻是空的。我怎樣才能正確地獲取結果\

編輯: OK,我設法使它通過工作:

someList = [] 
q = db.GqlQuery("SELECT url FROM Ads") 

for p in q.run(limit=None, batch_size=1000): 
    someList.append(p.url) 

有一些短的解決方案呢?

+0

如果你真的需要一個列表,你可以使用讀取。如果你不打算重新使用這個列表,我會考慮爲什麼你需要一個列表並且不能迭代。呵呵,列表(q.run(limit = None,batch_size = 1000))比for循環容易。 –

+0

請注意關於在文檔中提取的註釋注意:此方法僅僅是run()方法的一個簡單包裝,與直接使用run()相比,效率更低且內存更密集。你應該很少需要使用fetch();它主要是爲了方便您在需要檢索完整的內存中查詢結果列表的情況下提供的。 –

回答

1

通過指定GQL語句中的字段(而不是*),您實際上正在運行projection query。如果你檢查你的index.yaml文件,你應該看到dev服務器已經自動生成了一個索引來支持這個查詢。

通常情況下,您將查詢整個實體,然後根據需要遍歷實體(在您的情況下構建一個列表),就像您所做的一樣。如果你有大量的實體

投影查詢可能是有用的,但往往只需要查詢一些特定的屬性,這將減少延遲/減少帶寬等

相關問題