neo4j图形数据库的python绑定
neo4p的Python项目详细描述
neo4j python绑定
==
:概要:从python代码访问neo4j图形数据库功能
仅在osx雪豹、python 2.6上使用neo4j 1.3测试
注意
----
这是一项正在进行的工作。如果本文档中的内容失败或看起来不正确,请告诉我。
非常感谢。
installation
----
install jcc:
$easy_install jcc
下载并解压缩neo4j到某个地方(http://neo4j.org/download/)
目前只有1.3版支持Ne4JJHOLD环境变量到NeN4J下载:
出口$NE4JJHOL/~/NeX4J社区-1.3BR/> BR/>< BR/>进入NY4PY包目录:
B/>目录/////Read:BR/> BR/>用JCC构建C++包装:
BR/> $Pythonsetup.py build
安装(可能需要sudo ness):
$python setup.py install
运行一些测试:
$python test/test_graph_core.py
希望没有错误!如果有,请给我回溯:)
Getting Started
----
>最简单的方法是使用"全局"图。
>;>from neo4py import neo
>;>gdb=neo.init_graph('test-graph.neo4j')
>;
使用
>;gdb=neo.get戋graph()
transactions
----
>事务的处理方式不同于neo4j.py
>;tx,created=gdb.get戋tx()
如果created为true,则为此作用域在完成时提交事务的责任:
>;>tx.finish(true)success-提交对数据库的更改
>;>tx.finish(false)failure-回滚更改
>;>tx.success()或.failure()
>;>tx.finish()这里传递的是true还是false并不重要--它将被忽略
关系和属性(有趣的东西的开始)
----------
**并非所有语法都与neo4j.py兼容**
创建节点::(必须在事务中!)
>;>;n=gdb.node()
访问属性:
>;>value=n['key']\"默认值")
>;>;对于prop in n:do廑something(prop)
>;>;对于prop,value in n.iteritems():do廑something(prop,value)廑循环节点属性
>;>;更多props={"name":"jack","occupation":"pilot"}
>;>;n1.更新(更多的道具)
>;>n2.更新(name="sarah",ocposition="宇航员")
>;>n.id节点id
n1.relationships("likes")(n2,how"much="lot")当
关系的名称存储在变量中时使用。
尽管此语法可能会更改…看起来很模糊?
相对起点起点节点(n1)
>;>>相对终点终点节点(n2)
>>>>相对类型
"知道"
"关系"属性上的其他功能是可能的。像get all一样,
传入或传出关系(键入或不键入):
>;>rels=list(n1.relationships())
>;>rels=list(n1.relationships("knows","likes").incoming)
>;>rel=n1.knows.outgoing.single
遍历
----
正在进行。非常类似于neo4j.py
请参见tests(neo4py/testing/graph_core.py)
>neo4py.core import direction
>>neo4py.traversal import traverser,stop,returnable,order
class mytraverser(traverser):
types=[direction.incoming.knows,方向:无方向性。喜欢的是:< =:=,可以使用一个Python方法,它主要是未经测试的。更快)
order=order.depth_first
索引
----
请参见测试(neo4py/testing/graph_core.py)
>;>;节点idx=gdb.node_index.create("我的节点索引",fulltext=true)创建新的全文索引
将失败索引,名称已存在
>;>节点idx=gdb。节点索引["我的节点索引"]检索已创建的索引
>;>gdb中的"该索引"。节点索引测试索引是否存在
false
>>>>gdb中的"我的节点索引"。节点索引
true
>>>rel廑idx=gdb.rel廑index.create("关系索引")的工作原理相同,但对于关系
>>>>节点idx['name',"jack"]=n1
>;节点idx['name',"jack"]=n500个节点在"name"=>;"jack"
>;>;nodes=list(node懔idx['name','jack'])下索引;返回两个节点上的迭代器(使用此语法精确匹配)
>;>;nodes=list(node懔idx.simple懔query('name','jack')按单键/值进行全文查询
>;>;nodes=list(node_idx.query('name:jack'))运行lucene query(支持多个键)
关系索引相同,但有两个额外选项(请参阅neo4j文档):
>;>;rels=list(rel_idx.simple_query('key',value',start_node=n1)限制查询,以提高效率(也可以是结束节点)
>;>rels=list(rel廑idx.query('key:value',结束节点=some廑other廑node)
==
:概要:从python代码访问neo4j图形数据库功能
仅在osx雪豹、python 2.6上使用neo4j 1.3测试
注意
----
这是一项正在进行的工作。如果本文档中的内容失败或看起来不正确,请告诉我。
非常感谢。
installation
----
install jcc:
$easy_install jcc
下载并解压缩neo4j到某个地方(http://neo4j.org/download/)
目前只有1.3版支持Ne4JJHOLD环境变量到NeN4J下载:
出口$NE4JJHOL/~/NeX4J社区-1.3BR/> BR/>< BR/>进入NY4PY包目录:
B/>目录/////Read:BR/> BR/>用JCC构建C++包装:
BR/> $Pythonsetup.py build
安装(可能需要sudo ness):
$python setup.py install
运行一些测试:
$python test/test_graph_core.py
希望没有错误!如果有,请给我回溯:)
Getting Started
----
>最简单的方法是使用"全局"图。
>;>from neo4py import neo
>;>gdb=neo.init_graph('test-graph.neo4j')
>;
使用
>;gdb=neo.get戋graph()
transactions
----
>事务的处理方式不同于neo4j.py
>;tx,created=gdb.get戋tx()
如果created为true,则为此作用域在完成时提交事务的责任:
>;>tx.finish(true)success-提交对数据库的更改
>;>tx.finish(false)failure-回滚更改
>;>tx.success()或.failure()
>;>tx.finish()这里传递的是true还是false并不重要--它将被忽略
关系和属性(有趣的东西的开始)
----------
**并非所有语法都与neo4j.py兼容**
创建节点::(必须在事务中!)
>;>;n=gdb.node()
访问属性:
>;>value=n['key']\"默认值")
>;>;对于prop in n:do廑something(prop)
>;>;对于prop,value in n.iteritems():do廑something(prop,value)廑循环节点属性
>;>;更多props={"name":"jack","occupation":"pilot"}
>;>;n1.更新(更多的道具)
>;>n2.更新(name="sarah",ocposition="宇航员")
>;>n.id节点id
n1.relationships("likes")(n2,how"much="lot")当
关系的名称存储在变量中时使用。
尽管此语法可能会更改…看起来很模糊?
相对起点起点节点(n1)
>;>>相对终点终点节点(n2)
>>>>相对类型
"知道"
"关系"属性上的其他功能是可能的。像get all一样,
传入或传出关系(键入或不键入):
>;>rels=list(n1.relationships())
>;>rels=list(n1.relationships("knows","likes").incoming)
>;>rel=n1.knows.outgoing.single
遍历
----
正在进行。非常类似于neo4j.py
请参见tests(neo4py/testing/graph_core.py)
>neo4py.core import direction
>>neo4py.traversal import traverser,stop,returnable,order
class mytraverser(traverser):
types=[direction.incoming.knows,方向:无方向性。喜欢的是:< =:=,可以使用一个Python方法,它主要是未经测试的。更快)
order=order.depth_first
索引
----
请参见测试(neo4py/testing/graph_core.py)
>;>;节点idx=gdb.node_index.create("我的节点索引",fulltext=true)创建新的全文索引
将失败索引,名称已存在
>;>节点idx=gdb。节点索引["我的节点索引"]检索已创建的索引
>;>gdb中的"该索引"。节点索引测试索引是否存在
false
>>>>gdb中的"我的节点索引"。节点索引
true
>>>rel廑idx=gdb.rel廑index.create("关系索引")的工作原理相同,但对于关系
>>>>节点idx['name',"jack"]=n1
>;节点idx['name',"jack"]=n500个节点在"name"=>;"jack"
>;>;nodes=list(node懔idx['name','jack'])下索引;返回两个节点上的迭代器(使用此语法精确匹配)
>;>;nodes=list(node懔idx.simple懔query('name','jack')按单键/值进行全文查询
>;>;nodes=list(node_idx.query('name:jack'))运行lucene query(支持多个键)
关系索引相同,但有两个额外选项(请参阅neo4j文档):
>;>;rels=list(rel_idx.simple_query('key',value',start_node=n1)限制查询,以提高效率(也可以是结束节点)
>;>rels=list(rel廑idx.query('key:value',结束节点=some廑other廑node)