Neo4j之python连接失败解决(py2neo)
本文简述在 python 中使用 py2neo 连接 Neo4j 及连接时可能遇到的问题和解决方法。
使用 pip
工具安装 py2neo 。
1 | pip install py2neo |
若已安装 pip 仍提示 pip : command not found
,可以切换到到 Python
的安装目录<Installation floder>\Scripts
目录下,使用以下命令安装:
1 | ./pip install py2neo |
由于网络原因,有可能多次下载失败,这种情况可以选择到
PyPI 手动下载py2neo package
,再使用 pip
进行安装:
1 | pip install THE_PACKAGE_PATH |
导入 py2neo :
1 | >>>import py2neo |
调用 py2neo.Graph()
函数连接Neo4j中已有的图:
1 | >>>graph=py2neo.Graph("bolt://localhost:7687") |
注:这里的端口是一般情况下的默认端口号,在该端口被占用的情况下Neo4j启用的访问端口可能并不是此端口号。
此时并不能看出连接是否成功,可以使用查询语句查看是否能查询到结果,若连接成功,则此时可以使用图实例所提供的各项功能,py2neo 中提供了对节点、关系,以及各类操作的方法,也可以调用 Cypher 语句进行操作。
这里我们通过调用 len()
函数对节点进行计数来查看连接状态:
1 | >>>len(graph.nodes) |
若连接不成功,可能看到以下错误提示
1 | Traceback (most recent call last): |
可以看到是身份验证失败而产生的错误。这是由于连接时未设置用户名和密码导致的,默认用户名为
neo4j
,密码为password
,而 Neo4j 默认密码为
neo4j
,因此导致了认证失败,同时在第一次开启图数据库时
Neo4j 会提示设立身份验证方式,此时设置的密码将用于登录,若使用 Neo4j
Browser,并不会在每一次登陆时都提示身份验证,因此并未注意到这一点。在
Neo4j Browser 中使用 server user list
可以看到此时有名为
neo4j
的使用者。可以使用 server user add
命令添加一个用户,用此用户作为 Graph()
的 auth
项参数登录即可。
1 | >>>graph=py2neo.Graph("bolt://localhost:7687", auth=('username', 'password')) |
注:在查找此问题的解决方式时看到有提议用 neo4j-admin
工具修改初始密码,在 Windows 下,此工具并不是直接以 *.exe
的可执行文件出现,而是 *.bat
的批处理文件,并且在 Neo4j
Desktop 版本下此工具不是位于
<Installation Folder>/bin
,而应该切换至
<Database Folder>/bin
目录下,运行以下命令:
1 | ./neo4j-admin.bat YOURCOMMAND |
但在此操作应该是在数据库未建立时,否则,将会提示此时的权限已经转移到
<Database Folder>/data/dbms/
下的 auth
文件中,如果要重设密码应该移除 auth
和 role
相关文件或者重设该数据库,所以并不能使用此方式,新建一个用户应该是一个比较好的选择。