Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将Py2Neo和x27子类化;让我们走正确的路_Python_Neo4j_Py2neo - Fatal编程技术网

Python 将Py2Neo和x27子类化;让我们走正确的路

Python 将Py2Neo和x27子类化;让我们走正确的路,python,neo4j,py2neo,Python,Neo4j,Py2neo,假设你有一个非常简单的图 In [5]: node = py2neo.Node('LABEL', key='value') In [6]: node_two = py2neo.Node('LABEL', key='value2') In [7]: graph.create(py2neo.Relationship(node, 'IS_RELATED_TO', node_two)) 此时,节点已绑定。尽管在v3中,节点.bound布尔值似乎已被删除,但您可以通过检查其\uuuuuuuuuuuu

假设你有一个非常简单的图

In [5]: node = py2neo.Node('LABEL', key='value')

In [6]: node_two = py2neo.Node('LABEL', key='value2')

In [7]: graph.create(py2neo.Relationship(node, 'IS_RELATED_TO', node_two))
此时,
节点
已绑定。尽管在v3中,
节点.bound
布尔值似乎已被删除,但您可以通过检查其
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

In [8]: node.__remote__
Out[8]: <RemoteEntity graph=u'http://localhost:7474/db/data/' ref=u'node/53983'>
这有一个不幸的副作用,
new\u node
不能用作期望绑定节点的多个方法的目标,例如
match\u one

In [11]: graph.match_one(new_node, 'IS_RELATED_TO', node_two)
TypeError: Nodes for relationship match end points must be bound
用例:子类化。如果我子类
py2neo.Node
,我必须从
py2neo.Node
(大多数
py2neo
方法返回)转换到我的子类。但是,这会解除节点的绑定,这使得它对其他
py2neo
方法毫无用处,首先会破坏子类化的目的

解决方法:如果我设置
新节点。\uuuuu remote\uuuu=node.\uuuuu remote\uuuu
,这似乎是可行的,并且根据定义绑定了
新节点
。然而,我有一种很有趣的感觉,就是在处理像这样的第三方双下划线属性。我不确定这是否得到支持,我肯定这是没有文件记录的。它可能有副作用,我不知道

官方解决方案的问题 ,这似乎是官方的解决方案:

在初始状态下,节点将解除绑定。这意味着它只存在于客户机上,不引用相应的服务器节点。在Neo4j数据库中,节点通常由它绑定

这表明处理未绑定副本(
new_node
)的正确方法是使用
graph.create
。但是,这会向图形中添加一个新的不需要的节点,该节点没有标签,并且与
节点
具有相同的属性。我可以使用
graph.merge
来避免创建不需要的副本,但这会用
new\u节点上的任何内容覆盖图形中的属性,我并不总是想要这些内容

那么,您应该如何将
py2neo.Node
转换为任何其他类型(或复制它),而不完全破坏py2neo工作流

我已经打开了一个相关的问题,如果维护人员没有在这里发布,我会用从他那里得到的任何信息更新这个问题

In [11]: graph.match_one(new_node, 'IS_RELATED_TO', node_two)
TypeError: Nodes for relationship match end points must be bound