在Google App Engine数据存储中使用ReferenceProperty是否合理?

时间:2012-10-06 09:46:53

标签: python google-app-engine

class Author(db.Model):
    name = db.StringProperty()

class Story(db.Model):
    author = db.ReferenceProperty(Author)

story = db.get(story_key)
author_name = story.author.name

author = db.get(author_key)
stories_by_author = author.story_set.get()

众所周知;使用ReferenceProperty是数据关系的良好解决方案,如上所示。 所以; 例如,我们的“作者”和“故事”实体(表格)中有大量的行。多年后,我们删除了“作者”实体或将名称替换为另一个名称。 自然;我们的应用sholud抛出错误。 这种情况(管理代码)是否合理或手动执行关系是否良好?这种情况有替代模型吗?

1 个答案:

答案 0 :(得分:0)

这是数据存储区提供的工具。如果你想要更强大的东西,你可以构建一个带有析构函数的类,它总是检查它们的ReferenceProperties并清理它们。

这有点像询问指针是否是一件坏事,因为你可以泄漏内存并留下悬空指针。是的,但是在某些语言中,这是可用的基本工具。如果你想要更安全的东西,可以在它周围构建一个包装器。或者使用其他语言(如Cloud SQL)。