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

Auto increment property with py2neo (Neo4j)?

我将 Flask 与 py2neo 一起用于我的 Rest 服务,我有一个带有标签 "User".

的用户节点

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

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

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

因此,无论何时创建任何节点,neo4j 都会免费自动执行此操作,而 py2neo 不会这样做。

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

将自动递增数字作为 ID 的问题在于,由于它们有一个模式(自动递增),人们开始依赖标识符的值,或者开始依赖对 ID 的预期被分配。这在数据库中几乎总是一个坏主意。标识符的唯一目的是与其他一切不同。它没有任何意义,在某些情况下甚至不能保证不改变。避免在您的代码中嵌入对任何特定值或分配方案的任何依赖。

这就是我喜欢 UUID 的原因,因为它们的分配方案本质上是任意的,而且它们显然没有任何意义——因此它们不会诱使设计师对它们做任何聪明的事情。 :)