0

我想将文本文件中的数据插入到使用 py2neo 中。但是他们是在创建节点之前检查它是否已经存在的一种方法。 例如Neo4j,他们的任何 py2neo 方式CREATE UNIQUE

创建节点 A 到 B 创建节点 A 到 C

然后只需创建单个节点 A 并连接到 B 和 C

插入数据.py

from pprint import pprint
from py2neo import neo4j,node, rel, cypher
#------------------------------------------------------------------------------ 

f = open('sample_dataset')
lines = f.readlines()
graph_db = neo4j.GraphDatabaseService()
print graph_db.get_reference_node()
try:
    for row in lines:    
        from_node = row.split('\t')[0].strip()
        to_node = row.split('\t')[1].strip()
        graph_db.create(
                        node(name=from_node),
                        node(name=to_node))                               
except Exception as e:
    print e

数据.txt:

101 102
101 104
101 107
101 125
101 165
101 168
101 170
101 176
101 180
101 181
101 182
101 209
101 210
101 248
101 306
101 329
101 330
101 340
101 349
101 352
101 355
101 356
101 359
101 364
101 365
101 368
101 372
101 373
101 383
101 433
101 438
101 439
101 441
101 448
101 466
101 471
101 484
101 526
4

2 回答 2

2

一种方法是使用 CYPHER 2.0 和 py2neo。在您的代码中只需替换

graph_db.create

有了这个,查询字符串的开头是 CYPHER 2.0,它支持 MERGE:

query = neo4j.CypherQuery(graph_db,
        """CYPHER 2.0 
            merge (n {name: {from}})
            merge(m {name: {to}}) 
            create unique (n)-[:relation]->(m)""")
result = query.execute( from = from_node, to = to_no)

使用合并 n,仅当 n 不在数据库中时才会创建它。希望这可以帮助。

于 2013-09-25T21:50:14.397 回答
1

有几种方法可以通过 py2neo 管理唯一性,并且通过直接 Cypher 查询和几种包装方法都支持 CREATE UNIQUE。我最近写了一篇关于这个主题的博客文章,所以你可能可以从这里得到一些指示:

http://blog.safaribooksonline.com/2013/08/07/managing-uniqueness-with-py2neo/

希望这可以帮助。

于 2013-09-23T10:18:53.247 回答