赞
踩
Neo4j是一个高性能的NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
Neo4j因其嵌入式、高性能、轻量级等优势,越来越受到关注。
Neo4j有desktop、server和driver版本。企业版的有试用期,试用期满后要付费才能使用。社区版是免费的。桌面版需要激活码。
到Neo4j官网下载Community Server版本,根据系统类型选择Linux/Mac或Windows。链接如下:
(1)官方驱动
Neo4j Python driver是官方支持的驱动,采用二进制协议连接数据库。它的目标是最小化,同时又符合python的习惯。
对Python2的支持将在即将发布的驱动程序的2.0版本中删除。
采用pip命令安装:
pip install neo4j
一个使用驱动的例子:
from neo4j import GraphDatabase class HelloWorldExample(object): def __init__(self, uri, user, password): self._driver = GraphDatabase.driver(uri, auth=(user, password)) def close(self): self._driver.close() def print_greeting(self, message): with self._driver.session() as session: greeting = session.write_transaction(self._create_and_return_greeting, message) print(greeting) @staticmethod def _create_and_return_greeting(tx, message): result = tx.run("CREATE (a:Greeting) " "SET a.message = $message " "RETURN a.message + ', from node ' + id(a)", message=message) return result.single()[0]
Neo4j手册见The Neo4j Drivers Manual v4.0。
Neo4j示例项目是一个小的、单页的webapp,用于Neo4j教程中内置的电影数据库。所有驱动程序的前端页面都是相同的:电影搜索、电影详细信息以及演员和电影的图形可视化。每个后端实现都向您展示了如何从每种不同的语言和驱动程序连接到Neo4j。
在这里,您可以了解更多关于我们跨许多不同语言驱动程序的小型、一致的示例项目的信息。您将发现所有驱动程序的实现都是单独的GitHub存储库,您可以直接克隆和部署这些存储库。
(2)社区驱动-Py2neo
Py2neo是一个客户端库和综合工具包,用于从Python应用程序内部和命令行处理Neo4j。它经过精心设计,易于使用和直观。
安装
pip install py2neo
示例
from py2neo import Graph
graph = Graph()
tx = graph.begin()
for name in ["Alice", "Bob", "Carol"]:
tx.append("CREATE (person:Person {name:{name}}) RETURN person", name=name)
alice, bob, carol = [result.one for result in tx.commit()]
(3)社区驱动-Neomodel
在Neo4j python驱动程序之上构建的对象图映射器。熟悉的Django风格的节点定义具有强大的查询API、线程安全和完全事务支持。Django插件Django_neomodel也可用。
安装
pip install neomodel
示例
from neomodel import StructuredNode, StringProperty, RelationshipTo, RelationshipFrom, config
config.DATABASE_URL = 'bolt://neo4j:test@localhost:7687'
class Book(StructuredNode):
title = StringProperty(unique_index=True)
author = RelationshipTo('Author', 'AUTHOR')
class Author(StructuredNode):
name = StringProperty(unique_index=True)
books = RelationshipFrom('Book', 'AUTHOR')
harry_potter = Book(title='Harry potter and the..').save()
rowling = Author(name='J. K. Rowling').save()
harry_potter.author.connect(rowling)
virtualenv用来建立一个虚拟的python环境,一个专属于项目的python环境。 ↩︎
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。