neo4j python 开发并展示_在 Python 中使用 Neo4j

让我们直接看看代码。下面是一个完整的小型应用。这个程序允许添加新的名字与一个或者更多email地址相连接的以及提供了一个容易的方式来显示这些连接信息的一个命令行工具。没有参数的运行是显示使用模式,而且这个唯一的依赖只是需要一个本地未修改的Neo4j实例(instance)而已。

#!/usr/bin/env python

# -*- coding: utf-8 -*-

from __future__ import print_function

import sys

from py2neo import neo4j, node, rel

graph_db = neo4j.GraphDatabaseService()

class Person(object):

_root = graph_db.get_or_create_indexed_node("reference",

"contacts", "root")

@classmethod

def create(cls, name, *emails):

person_node, _ = graph_db.create(node(name=name),

rel(cls._root, "PERSON", 0))

for email in emails:

graph_db.create(node(email=email), rel(cls._root, "EMAIL", 0),

rel(person_node, "EMAIL", 0))

return Person(person_node)

@classmethod

def get_all(cls):

return [Person(person.end_node) for person in

cls._root.match("PERSON")]

def __init__(self, node):

self._node = node

def __str__(self):

return self.name + "\n" + "\n".join(" "

.format(email) for email in self.emails)

@property

def name(self):

return self._node["name"]

@property

def emails(self):

return [rel.end_node["email"] for rel in

self._node.match("EMAIL")]

if __name__ == "__main__":

if len(sys.argv) < 2:

app = sys.argv[0]

print("Usage: {0} add

[...]".format(app))

print(" {0} list".format(app))

sys.exit()

method = sys.argv[1]

if method == "add":

print(Person.create(*sys.argv[2:]))

elif method == "list":

for person in Person.get_all():

print(person)

else:

print("Unknown command") 在第09行上是第一行Py2neo代码,用来创建了一个

GraphDatabaseService对象。通过这个,我们就可以访问使用Neo4j server的大多数功能。可选一个URI传递到这个构造器里,尽管如果什么都没有提供,代而取之的是使用默认的本地参数。也就是说下面两行是完全相等的:

graph_db = neo4j.GraphDatabaseService()

graph_db = neo4j.GraphDatabaseService

("http://localhost:7474/db/data/")

第13行介绍了调用了get_or_create_indexed_node,它提供一种在图形里创建固定引用点的漂亮方式。传统的Neo4j索引允许节点和关系通过键值对访问,而在这个代码里我们使用了带连接的关键字和root值的引用索引实例。在第一次执行时,会创建一个新的节点,而且在随后的执行中,这个节点(即root)会复用(reused)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值