Как построить GQL, чтобы не содержать значения из набора? - PullRequest
3 голосов
/ 28 сентября 2010

Можно ли выбрать из базы данных движка приложений Google, где ключ объекта db.Model отсутствует в данном списке? Если так, какой будет синтаксис?

Ex модельного класса:

class Spam(db.Model):
    field1 = db.BooleanProperty(default=false)
    field2 = db.IntegerProperty()

Пример запроса, который я хотел бы обработать, но не могу понять:

spam_results = db.GqlQuery(
"SELECT * FROM Spam WHERE key NOT IN :1 LIMIT 10", 
['ag1waWNreXByZXNlbnRzchMLEgxBbm5vdW5jZW1lbnQYjAEM', 
 'ag1waWNreXByZXNlbnRzchMLEgxBbm5vdW5jZW1lbnQYjgEM'])

for eggs in spam_results:
  print "id: %s" % a.key().id()

1 Ответ

6 голосов
/ 28 сентября 2010

Нет Хотя механизм приложений поддерживает запрос IN, он не поддерживает запрос NOT IN.

Однако, если ваш список сущностей, которые вы не хотите, мал, тогда вы можете просто извлечь каждую сущность и отфильтровать те, которые вам не нужны .

В качестве альтернативы, если список сущностей, которые вы хотите исключить, составляет значительную долю всех сущностей, то приведенное выше решение будет довольно неэффективным. Вместо этого, возможно, вы могли бы добавить в свою модель дополнительное свойство, которое вы могли бы использовать для отфильтровывания объектов, которые вам не нужны (возможно ли это, зависит от ваших конкретных потребностей и данных).

...