GAE数据存储区查询ConjunctionNode错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GAE数据存储区查询ConjunctionNode错误相关的知识,希望对你有一定的参考价值。
我在数据存储区中有一个ndb模型,有两个字段 - 除了bookname,author等其他详细信息之外,它们已过期且到期。
class Books(ndb.Model):
expiry = ndb.IntegerProperty() #epoch
expired = ndb.BooleanProperty(default=False) # set True if expiry < curr_time
我写了cron.yaml和cron.py来标记expired=True
找到expiry < curr_time
的书。
以下是我的cron.py片段:
from google.appengine.api import search
import logging
from models.books import Books
from google.appengine.ext import ndb
import time
def deleteindex(cls):
curr_time = int(time.time()) + 60
#find the books which have expired but not marked expired.
expired_books = Books.query(ndb.AND(Books.expiry < curr_time, not Books.expired))
print expired_books
但是,我收到错误:
deleteindex中的文件“/home/hduser/Documents/GCP/book-shelf453/default/app/cron.py”,第16行
expired_books = Books.query(ndb.AND(Books.expiry <curr_time,而不是Books.expired))文件“/ home / hduser / Documents / GCP / google-cloud-sdk / platform / google_appengine / google / appengine / ext / ndb /query.py“,第583行,在新的'收到非节点实例%r'%节点中)
TypeError:ConjunctionNode()期望Node实例作为参数;收到非节点实例False
我不确定这里的问题。请指教!谢谢!
ndb查询过滤器必须包含模型属性和值之间的比较 - 例如Books.expiry
和int
之间的比较。
not Books.expired
不是这样的比较,这是错误的原因。
而不是否定Books.expired
,将其与布尔值进行比较。
这应该工作:
expired_books = Books.query(ndb.AND(Books.expiry < curr_time, Books.expired != False))
以上是关于GAE数据存储区查询ConjunctionNode错误的主要内容,如果未能解决你的问题,请参考以下文章
GAE上的RESTful API:端点 - 原型数据存储区与云端点