2013-10-01 30 views
1

我不知道如何比較兩個字段或GQL中的屬性。如何比較GQL中的兩個字段

我使用python sdk,我有一個對象'房間',這個對象有兩個屬性,一個是'user1',另一個是'user2',所以我需要檢查用戶連接時,如果他是在一個房間或不。我想要做的事,如SQL在GQL這樣

SELECT * FROM ROOM WHERE user1 = 'joe' or user2 = 'joe' 

,但我不知道該怎麼沒有或做它,因爲GQL不與OR運算工作。

如果有人可以舉一個簡單的例子說明我該怎麼做,我會非常感激。

謝謝。

+0

[App Engine數據存儲不支持操作符OR](http://stackoverflow.com/questions/930966/app-engine-datastore-does-not-support-operator-or) –

+0

您是否需要檢查user1 == user2?在這種情況下,使用另一個預先計算的屬性進行過濾。非規範化在gae數據存儲上非常有用。像is_connected = ndb.ComputedProperty(lambda self:self.user1 == self.user2) –

回答

1

舊的Python數據存儲區API(包括GQL)不支持OR查詢。新的NDP API確實是support AND and OR queries

請注意,OR查詢不是本機數據存儲:NDB API將發出多個查詢,然後將它們組合在內存中以獲取結果。

在GQL中,通過運行兩個查詢(每個查詢條件一個),然後合併結果,可以實現相同的結果。