使用旧数据存储区我使用了密钥。现在我必须使用id(取自NDB Cheat Sheet doc):
user = User.get_by_id(user_id)
if user is None:
user = User(id=user_id)
但看起来这段代码不起作用 - 记录会多次添加。
(在我的情况下,user_id是String)
答案 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)