0

15 分間隔で Web サイトを解析する GAE (google app engine) アプリがあります。cron は 15 分ごとに、BitData()ロードされる最も古いデータ (この場合) のタイムスタンプをチェックし、その時点から までのデータを解析しますutc.now()BitData()残念ながら、最新のオブジェクトを求めて NDB データベースにクエリを実行する最初の部分を通過できません。

コード例:

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'

ここここ、および NDB Google ドキュメントの例に対してコードをチェックしましたが、クエリが実行されない理由がわかりません。

ビットデータ:

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

1 に答える 1

3

モデル定義は次のようにする必要があります。

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

ndb Property クラスを指すように Class フィールドを定義しているだけで、実際にはそれらのいずれもインスタンス化していません。

于 2013-04-08T05:13:19.897 に答える