python app engine模型查询同一组中的模型
Posted
技术标签:
【中文标题】python app engine模型查询同一组中的模型【英文标题】:python app engine Model query for models in the same group 【发布时间】:2011-04-26 16:58:13 【问题描述】:我有 db.Model 类型的实体的事务组,它们定义了父级。我想查询数据存储以仅返回同一组中的模型。目前我正在查询“种类”的所有对象,然后删除那些不具有相同根实体的对象。
有没有更清洁的方法来做到这一点 - 我在 sdk 中看不到。
例如:
from google.appengine.ext import db
class ParentObject(db.Model):
....
class ChildObject(db.Model):
....
parent1 = ParentObject()
parent2 = ParentObject()
child1 = ChildObject(parent=parent1)
child2 = ChildObject(parent=parent2)
child3 = ChildObject(parent=parent1)
我想运行一个返回 child1 和 child3 的查询,因为它们具有相同的父级。
【问题讨论】:
您能否提供有关您的实际模型定义的更多信息?我可能误解了您的模型关系,但祖先查询会有所帮助吗? @Will - 感谢您的评论,我添加了一些伪代码,让我知道这是否足以让问题变得清晰。 @Will McCutchen 阅读了我正在寻找的祖先查询 - 谢谢。 【参考方案1】:我认为这就是您要寻找的。
get_chlids=ChildObject.all().ancestor(parent1)
了解有关在 appengine 中建模的更多信息。你可以看看here
【讨论】:
【参考方案2】:class TestFamilyTree(unittest.TestCase):
def test_family_tree(self):
parent1 = ParentObject()
parent1.put()
parent2 = ParentObject()
parent2.put()
child1 = ChildObject(parent=parent1)
child1.put()
child2 = ChildObject(parent=parent2)
child2.put()
child3 = ChildObject(parent=parent1)
child3.put()
query = ChildObject.all()
query.ancestor(child1.parent())
siblings = query.fetch(100)
self.assertEqual(len(siblings),2)
【讨论】:
以上是关于python app engine模型查询同一组中的模型的主要内容,如果未能解决你的问题,请参考以下文章
python 有效地翻页查询以从Google App Engine数据存储中获取所有实体。
如何在 Google App Engine Python 上的 Django nonrel 中使用查询游标?
是否可以在没有 OAuth2 身份验证对话框的情况下从 Google App-Engine (python) 连接和查询 BigQuery 表?
使用搜索 API Python - Google App Engine 大表
在Google App Engine中,Python DataStore模型是get_by_key_name的结果( )以与输入相同的顺序?
在 python Google App Engine 中,如何将模型的所有实体导出到 Google Storage 中的文件以供开发人员使用?