这个问题与github问题 of Neo4django有关。我想使用Django web框架中的Neo4j图DB创建多个图。我使用Django 1.4.5、neo4j 1.9.2和neo4django 0.1.8。
到目前为止,Neo4django不支持标签,但以上是我的核心目的,我希望能够创建标签从Neo4django。因此,我进入了源代码,并试图对它做一些调整,看看我是否可以做这个添加。据我理解,文件‘db/model/properties.py ties.py’有类BoundProperty(AttrRouter),它通过函数保存(例如,节点,node_is_new)调用gremlin脚本。该脚本如下:
script = '''
node=g.v(nodeId);
results = Neo4Django.updateNodeProperties(node, propMap);
'''脚本从library.groovy调用update函数,所有函数看起来都很直观和漂亮。我试图添加这个函数来支持标签,但我没有groovy的经验。有人对如何进行有任何建议吗?任何帮助都将不胜感激。如果它有效的话,它将是neo4django的一个很大的补充:)
谢谢
发布于 2013-07-19 00:33:07
一些背景:
您突出显示的Groovy代码是使用Neo4j Gremlin插件执行的。首先,它支持Gremlin图DSL (例如node=g.v(nodeId)),它是在Groovy语言之上实现的。Groovy本身是Java的一个动态超集,所以大多数有效的Java代码都可以使用通过connection.gremlin(...)发送的脚本。发送的每个脚本都应该定义一个results变量,该变量将返回给neo4django,即使它只是null。
无论如何,以这种方式访问Neo4j是很方便的(虽然我听说过:( )),因为您可以使用完整的Neo4j嵌入Java。尝试这样的方法将标签添加到节点
from neo4django.db import connection
connection.gremlin("""
node = g.v(nodeId)
label = DynamicLabel.label('Label_Name')
node.rawVertex.addLabel(label)
""", nodeId=node_id)您可能还需要为DynamicLabel添加一个导入--我还没有运行这段代码,所以我不确定。用这种方式编写的调试代码有点困难,所以可以自由地使用Neo4j管理中的Gremlin选项卡。
如果你想出了一个可行的解决方案,我很乐意看到它(或者是一篇解释性的博客文章!)--我相信它会对其他用户有所帮助。
哈哈!
NB -标签将在Neo4j 2.0发布后不久得到适当的支持--它们将取代当前的图形类型结构。
https://stackoverflow.com/questions/17727589
复制相似问题