gpt4 book ai didi

python - 如何使用 py2neo 声明唯一约束

转载 作者:行者123 更新时间:2023-11-28 21:15:52 25 4
gpt4 key购买 nike

我需要对我的图形数据库强制执行唯一约束。我找到了以下方法:

graph.schema.create_uniqueness_constraint("Website", "url") 

但它会产生以下错误:

graph.schema.create_uniqueness_constraint("Website", "url")
AttributeError: 'Schema' object has no attribute 'create_uniqueness_constraint'

我的导入和图形实例化是:

from py2neo import neo4j,node 
graph = neo4j.GraphDatabaseService("http://localhost:7474/db/data/")

我做错了什么,我该如何解决?

此外,使用 py2neo 添加唯一性约束的最简单、最干净的方法是什么?

我对大量的方法感到困惑,这些方法有时似乎无缘无故地失败了(找不到关于 py2neo 的综合教程),我开始觉得我最好还是编写原始的 Cypher 查询.. .

最佳答案

看起来您正在使用 py2neo 版本 1.x 并正在阅读版本 2.0 的文档。在 py2neo 2.0 中:

from py2neo import Graph
graph = Graph()
graph.schema.create_uniqueness_constraint('Website', 'url')

在 py2neo 1.x 中,我不确定是否有创建唯一性约束的方法。您可能必须这样做:

from py2neo import neo4j
graph = neo4j.GraphDatabaseService("http://localhost:7474/db/data/")
neo4j.CypherQuery(graph, 'CREATE CONSTRAINT ON (w:Website) ASSERT w.url IS UNIQUE;').run()

编辑:根据下面评论中的问题进行更新。 OP 在 py2neo 2.0 上。

Neo4j 不允许您在不指定标签的情况下创建唯一性约束。然而,这在 py2neo 中很容易实现。您可以使用 graph.node_labels 获取图表中所有标签的列表,然后您可以迭代这些标签并在每个具有给定属性的标签上创建唯一性约束:

from py2neo import Graph
graph = Graph()

labels = graph.node_labels

for label in labels:
graph.schema.create_uniqueness_constraint(label, 'url')

请注意,如果约束已经存在,这将失败并返回 py2neo.error.ConstraintViolationException;你可能想把它包装在一个 try-except 中:

for label in labels:
try:
graph.schema.create_uniqueness_constraint(label, 'url')
except:
pass

关于python - 如何使用 py2neo 声明唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29579865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com