Como construir o GQL para não conter um valor de um conjunto?
-
25-09-2019 - |
Pergunta
É possível selecionar de um db de mecanismo do Google App, onde a chave de um db.Model
Objeto não está em uma determinada lista? Se sim, qual seria a sintaxe?
Ex de uma classe modelo:
class Spam(db.Model):
field1 = db.BooleanProperty(default=false)
field2 = db.IntegerProperty()
Exemplo de uma consulta que eu gostaria de trabalhar, mas não consigo descobrir:
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()
Solução
Não, embora o App Engine suporte uma consulta "in", ele não suporta uma consulta "não na".
No entanto, se sua lista de entidades você não quer é pequeno, então você pode apenas recuperar todo entidade e filtra os que você não precisa.
Como alternativa, se a lista de entidades que você deseja excluir for uma grande fração de todas as entidades, a solução acima será bastante ineficiente. Em vez disso, talvez você possa adicionar uma propriedade adicional ao seu modelo que você pode usar para filtrar entidades que não deseja (se isso é possível depender ou não de suas necessidades e dados específicos).