Python 如何构造GQL使其不包含集合中的值?

Python 如何构造GQL使其不包含集合中的值?,python,google-app-engine,gql,gqlquery,Python,Google App Engine,Gql,Gqlquery,如果db.Model对象的键不在给定列表中,是否可以从google app engine db中进行选择?如果是,语法是什么 模型类的Ex: class Spam(db.Model): field1 = db.BooleanProperty(default=false) field2 = db.IntegerProperty() 我想处理但无法解决的查询示例: spam_results = db.GqlQuery( "SELECT * FROM Spam WHERE key N

如果
db.Model
对象的键不在给定列表中,是否可以从google app engine db中进行选择?如果是,语法是什么

模型类的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()

否尽管app engine支持“IN”查询,但它不支持“not IN”查询

但是,如果您不想要的实体列表很小,那么您也可以检索每个实体并筛选出您不需要的实体


或者,如果要排除的实体列表占所有实体的很大一部分,则上述解决方案将相当低效。相反,您可以在模型中添加一个附加属性,用于过滤掉不需要的实体(这是否可行取决于您的具体需求和数据)。

谢谢。反正也一样。从文档中可以看出:“IN运算符对列表中的每个项执行单独的基础数据存储查询[…]对于任何单个GQL查询,最多允许30个数据存储查询”。我只需要取一个大的数字,然后从程序上把我不想要的分类出来。