接下来终于要正式进入正题了,之前我们还只是在python里面敲敲打打,现在需要在Neo4j里面创建数据库了
首先当然需要安装Neo4j,社区版就已经足够使用了,安装过程不再赘述
运行Neo4j之后,我们就可以在python里和它建立连接,连接方式有三种,也就是Neo4j支持的三种网络协议,Bolt,HTTP和HTTPS,分别使用端口7687,7474和7473(有的可能在windows防火墙中阻止了这几个端口,需要允许通过这几个端口)
文档中给出的代码示例都是通过Bolt连接,我一般习惯用HTTP连接
from py2neo import Graph
graph = Graph("http://localhost:7474/db/data/")
graph.run("一串Cypher语句").to_table()
上述代码中创建了graph对象,然后用graph.run就可以运行Cypher语句,就可以鼓捣很多事情了
我们还是来仔细看看文档中都说了些啥
2. Graph Databases (py2neo.database)
py2neo.database中包括的class和function都是用来和Neo4j交互的,其中最重要的就是Graph class,它表示一个Neo4j的图数据库实例,并提供到大多数常用的py2neo API的连接。
2.1 Database
Database通过Bolt或HTTP与整个的Noe4j图数据库连接。Database中包括Graph,目前Neo4j只支持一个Database中有一个Graph
突然想到那么Neo4j是否可以有多个Database呢?答案是可以的,但是在Database之间进行切换比较麻烦,具体参见:Neo4j多数库切换
Database的创建:
from py2neo import Database
db=Database() #使用默认参数bolt://localhost:7687,同下面这行代码
db=Database("bolt://localhost:7687")
Database的一些方法就暂时略过了,基本都是一些配置层面的参数和设置,目前应该还接触不到
2.2 Graph
Graph的创建(我理解为和Neo4j中的graph建立连接),以下三种方式都是等同的:
from py2neo import Graph
graph_1=Graph()
graph_2=Graph(host="localhost")
graph_3=Graph("bolt://localhost:7687")
创建时还可以设置一些其他参数,如user/password等
graph=Graph(user="admin", password="123456")
接下来可以将之前创建的一些节点、关系导入到Neo4j中
graph.create(node)
graph.create(relationship)
graph.create(subgraph)
注意,如果我们在python中对节点、关系等做了一些改动,Neo4j中的远程节点并不会相应地变化,需要用push方法更新一下
graph.push(node)
还有一种pull方法作用相反,就是在Neo4j中对节点等做了改动,python中相应节点也不会有变化,需要用pull将远程节点及相关属性“拉”回来
graph.pull(node)
理解create、push和pull的作用很重要,我之前不知道,尤其是看到有的教程说更新节点使用push或者pull(并没有强调区别),结果被坑了,半天时间都在找程序问题出在哪儿
今天就暂时到这儿吧,有空再继续