首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GraphObject在py2neo.ogm中的动态特性

GraphObject在py2neo.ogm中的动态特性
EN

Stack Overflow用户
提问于 2019-07-12 11:12:52
回答 1查看 260关注 0票数 2

使用py2neo的ogm模块,您可以为neo4j中的节点构建对象:

代码语言:javascript
运行
复制
class Person(GraphObject):
    __primarykey__ = 'name'

    name = Property()

    def __init__(self, name):
        self.name = name


peter = Person('peter')

graph.create(peter)

是否可以向Person对象添加动态属性?

代码语言:javascript
运行
复制
peter = Person('peter')

# this does not work
peter.last_name = 'jackson'

graph.create(peter)

首先创建一个节点并在后面添加属性是可能的,但是使用动态属性创建GraphObjects会更容易。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-26 14:56:51

我想出了一个用暴力解决这个问题的方法:

取出对象的类,将新属性中的新属性敲打到类中,并在它意识到刚刚发生的事情之前将其填充回对象中:D

代码语言:javascript
运行
复制
from py2neo.ogm import GraphObject, Property
from py2neo import Graph

class Person(GraphObject):
    __primarykey__ = "name"

    name = Property()

    def __init__(self, name):
        self.name = name

    def add_new_property(self, name, value):
        self.__class__ = type(
            type(self).__name__, (self.__class__,), {name: Property()}
        )
        setattr(self, name, value)


peter = Person("peter")
peter.add_new_property("lastname", "jackson")


g = Graph(host="localhost", user="neo4j", password="neo4j")
tx = g.begin()
tx.merge(peter)
tx.commit()

在这个小小的实验室里工作。但应该在更复杂的环境中进行测试。

DZD :)

时间

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57005835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档