Google App Engine - 数据存储区get_or_insert key_name混淆

时间:2010-11-29 20:53:22

标签: python database google-app-engine key

我对get_or_insert(..)感到困惑。我应该以{{1​​}}传递什么?请考虑以下示例:

key_name

假设没有两个人可以拥有相同的名字。假设我想获取或插入名为class Person(db.model) name = db.StringProperty(required=True) 的新Person,我的Peter语句会是什么样的?

干杯,

皮特

2 个答案:

答案 0 :(得分:5)

这里可能令人困惑的是,密钥不会直接显示在模型声明中,因此不需要示例中的name = db.StringProperty位。 get_or_insert将keyname作为其第一个(必需的)参数,因此您需要查找以下代码:

person = Person.get_or_insert('Peter')
# other interesting & useful code here...
# later, maybe we need to retrieve that key name from the object:
name = person.key().name()
assert(name == "Peter")

答案 1 :(得分:1)

您可以将key_name视为主键。查看get_or_insert(...)的文档,有一个后端代码的示例。

如果name是唯一字段,您可能也希望将其用作键名。虽然我建议剥离空格并使情况正常化。