【问题标题】:How to create label on py2neo object using Object-Graph-Mapping before saved in Neo4j database如何在保存到 Neo4j 数据库之前使用 Object-Graph-Mapping 在 py2neo 对象上创建标签
【发布时间】:2014-07-18 19:00:26
【问题描述】:

我正在尝试使用标签保存节点,但我不能。只有具有属性的节点才会保存在 neo4j 数据库中。如果有人可以在我保存对象之前帮助如何在对象上创建标签,我将不胜感激。我正在将 python 和 django 与 neo4j db 的 py2neo 对象图映射一起使用。这是代码。 (在密码中,这可以使用CREATE (n:Person{ id : id#, displayName : 'My Name' }) 来实现,但我想使用 py2neo 对象图映射。)

model.py我有

class Person(object):

    def __init__(self, id=None, displayName=None):
        self.id = id
        self.displayName = displayName

    def __str__(self):
        return self.displayName

在我的另一个.py 文件中

from py2neo import neo4j
from py2neo import ogm
graph_db = neo4j.GraphDatabaseService("http://localhost:7474/db/data/")`

def addPeople():
    store = ogm.Store(graph_db)
    worker = model.Person(1, "My Name")
    store.save_unique("People","ID",worker.id,worker)`

这里将使用iddispalyName 属性创建节点,但不使用标签。

【问题讨论】:

    标签: python neo4j py2neo


    【解决方案1】:

    OGM 模块最初是在将标签/模式功能添加到 Neo4j 之前设计的。因此,它通常不知道标签和模式索引,而是使用遗留索引。确保您熟悉这两种索引之间的区别:

    REST API 接口不适合在一个请求中创建带有标签详细信息的节点,因此这不是一个容易进行的更改。将来我可能会重新设计 OGM 模块以支持标签和架构索引,但对于您的应用程序,您可能希望改用 Cypher。

    【讨论】:

    • 感谢 Nigel 的回复。我是 neo4j 和 py2neo 的新手。那么使用 Cypher 查询是保存带有标签的节点的唯一选择吗?
    • 这是目前唯一直接的方法,是的。
    • 谢谢 Nigel,实际上我已经尝试过这段代码,它工作正常' worker = graph_db.get_or_create_indexed_node("Worker", "worker_id", 777, {"worker_id": 777, "displayName": " name"}) worker.set_labels("Worker")' 这将创建一个标签名为“Worker”的节点
    猜你喜欢
    • 1970-01-01
    • 2018-01-29
    • 2016-10-16
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    相关资源
    最近更新 更多