我有一个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'
我已根据示例here,here和NDB Google Docs检查了我的代码,但我似乎无法找到查询无法运行的原因。
BitData:
class BitData(ndb.Model):
key = ndb.KeyProperty
tstamp = ndb.DateTimeProperty
price = ndb.IntegerProperty
amount = ndb.IntegerProperty
答案 0 :(得分:3)
模型定义应该是:
class BitData(ndb.Model):
key = ndb.KeyProperty()
tstamp = ndb.DateTimeProperty()
price = ndb.IntegerProperty()
amount = ndb.IntegerProperty()
您只是将Class字段定义为指向ndb Property类,您实际上并未实例化它们中的任何一个。