使用py2neo(Neo4j)自动增加属性?

时间:2015-04-07 12:30:52

标签: python neo4j auto-increment py2neo

我正在使用带有py2neo的烧瓶进行Rest服务,我有一个标签为“User”的用户节点。

如何使用py2neo在neo4j中自动增加“User”标签的id?

1 个答案:

答案 0 :(得分:3)

你不是,你可能不应该这样做。 Neo4j已经提供了一个内部id字段,它是一个自动递增的整数。它不是节点的属性,但可以通过id()函数访问,如下所示:

MATCH (n:Person)
RETURN id(n);

因此,无论何时创建任何节点,这都已经由neo4j自动发生,并且不是由py2neo完成的。

如果您的代码需要不同类型的标识符,我建议使用一些似乎全局唯一的标识符,例如UUID,这在python中非常容易,而不是自动递增整数。

将数字自动递增为ID的问题在于,由于它们具有模式(自动递增),人们开始依赖于标识符的值,或者依赖于如何分配ID的期望。这在数据库中几乎总是一个坏主意。标识符的唯一目的是与其他所有内容都是唯一的。它并不意味着什么,在某些情况下甚至不能保证不会改变。避免在代码中嵌入任何特定值或赋值方案。

这就是我喜欢UUID的原因,因为他们的任务计划基本上是武断的,而且他们显然没有任何意义 - 所以他们不会诱使设计师做任何聪明的事情。 :)