如何使用NDB的id属性?

时间:2012-07-10 20:21:30

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

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

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

但看起来这段代码不起作用 - 记录会多次添加。

(在我的情况下,user_id是String)

3 个答案:

答案 0 :(得分:4)

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

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

这就是问题所在。

答案 1 :(得分: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)

BTW即使user_id是一个你应该使用的字符串'%s' % user_id

答案 2 :(得分:1)

听起来你想要一个交易操作:

user = User.get_or_insert(user_id)