对转换的属性值查询GAE数据存储

2024-04-25 17:15:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在app engine上开发一个Python NDB模型,它看起来像:

class NDBPath(ndb.Model):
    path = ndb.StringProperty()
    directory = ndb.ComputedProperty(lambda self: getDirectory(self.path))
    cat = ndb.IntegerProperty(indexed=False)

Path是一个文件路径,directory是该文件的超级目录,cat是一些数字。在初始加载之后,这些实体实际上是只读的。你知道吗

我用不同的文件路径查询数据存储,如果a)实体的路径与查询到的路径(同一个文件)匹配,或者b)实体的目录位于查询路径的超级目录中,我想提取实体的cat属性。最后我做了一个查询,比如:

NDBPath.query(NDBPath.directory.IN(generateSuperPaths(queriedPath)))

其中generatesuperspaths以查询路径的完整形式列出所有超目录(例如a/b/c/d.html --> [/a, /a/b, /a/b/c]

因为这些是只读的,所以使用computed属性实际上是一种浪费,因为它永远不会改变。有没有什么方法可以基于动态转换的值进行查询,比如

NDBPath.query(getDirectory(NDBPath.path).IN(generateSuperPaths(queriedPath)))

所以我可以把写目录保存为属性,然后在查询中使用它?你知道吗


Tags: 文件pathinself路径实体目录属性
1条回答
网友
1楼 · 发布于 2024-04-25 17:15:53

阿飞,是的。他们最终会做同样的事情,这将节省你的写作时间和成本。尽管这会使查询运行速度变慢(因为增加了计算),但是要小心可能的超时。你知道吗

相关问题 更多 >