Как построить GQL, чтобы не содержать значения из набора?

Можно ли выбрать из базы данных Google App Engine, где ключ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)

Решение Вопроса

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

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

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

 Cuga27 сент. 2010 г., 22:42
Благодарю. Это так же хорошо в любом случае. Из документов: «Оператор IN выполняет отдельный базовый запрос хранилища данных для каждого элемента в списке [...] Для каждого отдельного запроса GQL допускается максимум 30 запросов хранилища данных». Я просто соберу большое количество и отсортирую те, которые мне не нужны программно.

Ваш ответ на вопрос