1

对于旧数据存储,我使用了密钥。现在我必须使用 ids(取自NDB Cheat Sheet doc):

user = User.get_by_id(user_id)
if user is None:
    user = User(id=user_id)

但看起来这段代码不起作用 - 记录被添加了几次。

(在我的情况下,user_id 是字符串)

4

3 回答 3

4

我找到了原因,我上面的代码是正确的,但是我的类包含 id 属性:

class User(ndb.Model):
    id = ndb.StringProperty() 

这就是问题所在。

于 2012-07-11T15:35:45.353 回答
1

请参阅 NDB 备忘单的“构建密钥”部分。

user = ndb.Key('User', user_id).get()
if user is None:
  user = User(id=user_id)

或试试这个,让我知道它是否有效:

user = User.get_by_id(user_id)
  if user is None:
  user = User(id=user_id)

顺便说一句,即使 user_id 是您应该使用的字符串'%s' % user_id

于 2012-07-11T01:56:41.247 回答
1

听起来你想要一个事务操作:

user = User.get_or_insert(user_id)
于 2012-07-11T02:29:43.057 回答