在Python中,假设我有一个A
类的模型,它有一个ReferenceProperty b
来建模类B
,它有一个ReferenceProperty c
到模型类 C
。
假设数据存储中已存在 A
的实例,我可以通过以下方式获取它:
q = A.all()
a = q.get()
在这种情况下,实体加载是如何工作的?检索a
时是否检索到a.b
?检索a.b
时是否检索到a.b.c
? b
和 c
仅在首次访问时才检索吗?如果我将a
存储在memcache中,b
和c
也会被存储吗?如果没有,当我从内存缓存中获取 a
时,什么时候会检索它们?
我问这些问题的原因(除了好奇之外)是因为我有一个想要存储在内存缓存中的实体,但它链接到另一个实体(链接到另一个实体等),并且链接实体的总大小可能超过 1MB。
谢谢!
最佳答案
当您第一次访问模型时,它们将被取消引用。所以调用 a.b 将得到 b,调用 a.b.c 将得到 c。
查看 Nick Johnson 的博客,了解有关内存缓存模型的一些提示: http://blog.notdot.net/2009/9/Efficient-model-memcaching
关于python - Google App Engine 中的引用模型加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2329387/