1

我写代码如下

from google.appengine.ext import ndb

__metaclass__ = type


class UserSession(ndb.Model):
    session = ndb.BlobProperty()


class KV:
    @staticmethod
    def get(id):
        r = ndb.Key(UserSession, int(id)).get()
        if r:
            return r.session

    @staticmethod
    def set(id, value):
        return UserSession.get_or_insert(int(id), session=value)

    @staticmethod
    def delete(id):
        ndb.Key(UserSession, int(id)).delete()

我写的地方

id = 1
key = ndb.Key(UserSession, int(id))
UserSession.get_or_insert(key, session=1)

sdk 加薪

TypeError: name must be a string; received Key('UserSession', 1)

当我调用 KV.get ()

sdk 加薪

文件“/home/bitcoin/42btc/zapp/_plugin/auth/model/gae/user.py”,第 14 行,在 get

    r = ndb.Key(UserSession,int(id)).get()

...

BadRequestError:缺少密钥 ID/名称

那么,如何使用 NDB?

4

1 回答 1

6

get_or_insert() 方法接受一个字符串,该字符串只是密钥的 ID 部分,而不是密钥。它不能使用数字 ID。

于 2013-03-03T16:43:32.753 回答