2012-07-10 82 views
1

使用旧数据存储我已使用密钥。现在,我必须使用IDS(从NDB Cheat Sheet doc拍摄):如何使用NDB的id属性?

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

不过貌似这个代码不工作 - 记录添加几次。

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

+0

你如何创建实体?他们有父母吗? – aschmid00 2012-07-10 20:29:07

+0

@aschmid00,问题中的代码包含实体的创建 - 请参阅第3行。 – 2012-07-11 15:24:42

回答

4

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

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

这是问题所在。

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

1

听起来像你想的事务操作:

user = User.get_or_insert(user_id)