2010-05-08 19 views
1

在Python的Google App Engine中,我有一個擁有Patient父級的Visit實體。病人可能有多次訪問。批量獲取Google應用引擎上的子實體?

我需要在某處設置most_recent_visit(以及一些輔助訪問數據)供以後查詢,可能在Brett Slatkin可能稱爲「關係索引實體」的另一個子實體中。

我希望在散裝風格這樣做如下:

1. get 100 Patient keys 
2. get all Visits that have any of the Patients from 1 as an ancestor 
3. go through the Visits and get the latest for each Patient 

有什麼辦法來執行步驟2在批量get?

我知道有一種方法可以從鍵列表中批量獲取實體,並且可以通過其祖先匹配單個實體。

回答

3

數據存儲沒有辦法處理您要查詢的查詢類型;這是一個連接,不支持。第2步將需要100個查詢。

您可以在每個Patient實體中存儲訪問密鑰列表,然後能夠根據其密鑰進行簡單批量獲取所有這些實體。

0

爲什麼不保留患者對象上的患者訪問鍵列表?您將已經知道最後一次訪問,因爲它將是添加到列表中的最後一個密鑰。

我的NF檢測器像瘋了似的,這使我認爲這是數據存儲的正確解決方案。

0

如果您在模型Visit設置屬性Patient - 這樣的:

class Patient(db.Model): 
    pass 

class Visit(db.Model): 
    patient_visited = db.ReferenceProperty(Patient) 

會有每位患者實體此自動查詢物業visit_set,所以你這樣的查詢:

for patient in Patient.all(): 
    last_visit = patient.visit_set.order('-visited') 

這一切都完成了。 只有101個查詢。非常好。

相關問題