【问题标题】:py2neo: cannot create graphpy2neo:无法创建图形
【发布时间】:2018-08-11 05:58:22
【问题描述】:

我想尝试使用 py2neo,但甚至无法使用文档中的代码示例。例如,请参阅here。代码是:

from py2neo import Graph, Node, Relationship
g = Graph()
tx = g.begin()
a = Node("Person", name="Alice")
tx.create(a)
b = Node("Person", name="Bob")
ab = Relationship(a, "KNOWS", b)
tx.create(ab)
tx.commit()
g.exists(ab)

返回一些错误消息:

Traceback (most recent call last):
  File ".\test_py2neo.py", line 22, in <module>
    tx = g.begin()
  File "C:\Users\saran\AppData\Local\Programs\Python\Python35\lib\site-packages\py2neo\database.py", line 335, in begin
    return Transaction(self, autocommit)
  File "C:\Users\saran\AppData\Local\Programs\Python\Python35\lib\site-packages\py2neo\database.py", line 797, in __init__
    self.transaction = self.session.begin_transaction()
AttributeError: 'NoneType' object has no attribute 'begin_transaction'
Exception ignored in: <bound method Driver.__del__ of <neo4j.v1.api.Driver object at 0x000001325C9F0940>>
Traceback (most recent call last):
  File "C:\Users\saran\AppData\Local\Programs\Python\Python35\lib\site-packages\neo4j\v1\api.py", line 151, in __del__
  File "C:\Users\saran\AppData\Local\Programs\Python\Python35\lib\site-packages\neo4j\v1\api.py", line 193, in close
AttributeError: 'str' object has no attribute 'close'

如果我理解得很好,API 已更改,文档尚未更新。但我使用的是第 4 版,并且该手册似乎是为该版本编写的。有什么可以帮助我入门的建议吗?

【问题讨论】:

    标签: python neo4j py2neo


    【解决方案1】:

    好吧,我的错,我使用 py2neo 的方式不对。这是一段对我有用的代码:

    from py2neo import Graph, Node, Relationship
    
    uri = "bolt://localhost:7687"
    user = "neo4j"
    password = "..."
    
    g = Graph(uri=uri, user=user, password=password)
    
    # optionally clear the graph
    # g.delete_all()
    
    print(len(g.nodes))
    print(len(g.relationships))
    
    # begin a transaction
    tx = g.begin()
    
    # define some nodes and relationships
    a = Node("Person", name="Alice")
    b = Node("Person", name="Bob")
    ab = Relationship(a, "KNOWS", b)
    
    # create the nodes and relationships
    tx.create(a)
    tx.create(b)
    tx.create(ab)
    
    # commit the transaction
    tx.commit()
    
    print(g.exists(ab))
    print(len(g.nodes))
    print(len(g.relationships))
    

    显然,在执行此代码之前,Neo4j 服务器必须启动并运行。

    【讨论】:

    • 太棒了!谢谢!我想知道,如果我只想创建一个节点,我是否需要开始一个事务并提交它?或者我可以只创建一个节点吗?因为在“节点和关系”(基本示例)中尝试​​this 示例,它不会让我这样做。我需要像你一样进行交易!
    • @M.K:实际上,这也有效!从 py2neo 导入图、节点、关系 uri = "bolt://localhost:7687" user = "..." password = "..." g = Graph(uri=uri, user=user, password=password) alice = Node("Person", name="Alice") bob = Node("Person", name="Bob") alice_knows_bob = 关系(alice, "KNOWS", bob) g.create(alice_knows_bob)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 2018-09-28
    相关资源
    最近更新 更多