在cronjob期间执行NDB查询

时间:2013-04-08 02:41:33

标签: python google-app-engine app-engine-ndb

我有一个GAE(谷歌应用引擎)应用程序,每隔15分钟解析一个网站。每15分钟,cron将检查要加载的最旧数据(在这种情况下为BitData())的时间戳,并将从该点解析数据,直到utc.now()。 不幸的是,我无法通过查询NDB数据库的第一部分来获取最新的BitData()对象。

代码示例:

def bitcoincharts_last():
    q = BitData.query()
    q = q.order(BitData.tstamp)
    if q == None:
        return '0'
    else:
        return q[0]

这会在日志中输出错误:

TypeError: order() expects a Property or query Order; received <class 'google.appengine.ext.ndb.model.DateTimeProperty'>

使用q = q.order(-BitData.tsamp)来反转对响应的顺序,而不是:

TypeError: bad operand type for unary -: 'type'

我已根据示例herehere和NDB Google Docs检查了我的代码,但我似乎无法找到查询无法运行的原因。

BitData:

class BitData(ndb.Model):
    key = ndb.KeyProperty
    tstamp = ndb.DateTimeProperty
    price = ndb.IntegerProperty
    amount = ndb.IntegerProperty

1 个答案:

答案 0 :(得分:3)

模型定义应该是:

class BitData(ndb.Model):
    key = ndb.KeyProperty()
    tstamp = ndb.DateTimeProperty()
    price = ndb.IntegerProperty()
    amount = ndb.IntegerProperty()

您只是将Class字段定义为指向ndb Property类,您实际上并未实例化它们中的任何一个。