1

我正在使用 Neomodel Python 包和 Neo4j 数据库并且喜欢它。我目前正在使用 filter() 方法,但每次我在 SemiStructuredNode 中未定义的属性上使用 filter() 方法时都会出错。

在下面的示例中,我的 Person SemiStructuredNode 只有姓氏作为属性,但数据库中的某些节点也可能有 eye_color ,我想以此进行过滤。请注意,并非所有节点都有眼睛颜色。

class Person(SemiStructuredNode):
    surname = StringProperty()

Person.nodes.filter(surname__contains='atts',eye_colour='BLUE')

对我来说,上面的代码应该可以工作,但我得到了一个ValueError: No such property eye_colour on Person错误。但是,如果我更改我的类定义以将 eye_colour 作为 StringProperty 包含在内,一切都很好。但是,我不想这样做,因为我想使用各种其他动态过滤器,因为将不同的数据导入系统。

Neomodel 是否支持我正在尝试做的事情,或者我是否必须构建一个 Cypher 查询,或者有人能看到我做错了什么吗?

4

1 回答 1

0

在处理这种异常时,您应该始终使用 try 和 except 子句。

try:
    Person.nodes.filter(surname__contains='atts',eye_colour='BLUE')
except:
    print ("Couldn't filter surname and eye_colour")
于 2021-03-04T19:19:41.437 回答