安装
要开始创建 Neo4j Python 应用程序,首先需要安装 Python 驱动程序并获取一个可连接的 Neo4j 数据库实例。
安装驱动程序
使用 pip 安装 Neo4j Python 驱动程序(需要 Python >= 3.10)
pip install neo4j
该驱动程序的最新版本保证能与所有 Neo4j 服务器的 LTS(长期支持)版本,以及当前和下一个主要版本兼容。最新的 6.x 驱动程序支持连接到 4.4、5.x 和 2025.x 版本的 Neo4j 实例。有关各版本更改的详细列表,请参阅驱动程序更新日志。
激活 Python 的开发模式
在开发过程中,以开发模式运行 Python 可以帮助您及早发现 API 误用和性能泄漏问题。您可以通过 -X dev 命令行选项或将 PYTHONDEVMODE 环境变量设置为 1 来实现。
对于驱动程序,这将导致:
-
如果资源未正确关闭,则会发出
ResourceWarning。 -
如果使用了已弃用的 API,则会发出
DeprecationWarning。 -
启用驱动程序的调试模式(也可以通过设置环境变量
PYTHONNEO4JDEBUG来实现)。
Python 驱动程序的 Rust 扩展是一个替代包,与常规驱动程序相比,可带来 3 到 10 倍的速度提升。您可以安装它,命令为 pip install neo4j-rust-ext,既可以与 neo4j 包一起使用,也可以将其作为 neo4j 包的替代品。在使用方面,这些库是相同的:本指南中的所有内容同样适用于两者。 |
要在物理隔离(断网)的机器上获取驱动程序,请下载最新的驱动程序压缩包,并使用 pip install neo4j-<version>.tar.gz 进行安装。 |
获取 Neo4j 实例
您需要一个正在运行的 Neo4j 数据库才能与驱动程序一起使用。启动本地实例最简单的方法是通过 Docker 容器(需要 docker.io)。以下命令在 Docker 中运行最新的 Neo4j 版本,并将管理员用户名设置为 neo4j,密码设置为 secretgraph。
docker run \
-p7474:7474 \ # forward port 7474 (HTTP)
-p7687:7687 \ # forward port 7687 (Bolt)
-d \ # run in background
-e NEO4J_AUTH=neo4j/secretgraph \ # set login credentials
neo4j:latest
或者,您也可以通过 Aura 获取免费的云实例。
您还可以在您的系统上安装 Neo4j,或使用 Neo4j Desktop 创建本地开发环境(不适用于生产环境)。
术语表
- LTS (长期支持版)
-
长期支持 (Long Term Support) 版本是保证在若干年内得到支持的版本。Neo4j 4.4 和 5.26 是 LTS 版本。
- Aura
-
Aura 是 Neo4j 的全托管云服务。它提供免费和付费计划。
- Cypher
-
Cypher 是 Neo4j 的图查询语言,允许您从数据库中检索数据。它就像 SQL,但专用于图数据库。
- APOC
-
Awesome Procedures On Cypher (APOC) 是一个包含(许多)函数的库,这些函数在 Cypher 本身中难以轻松实现。
- Bolt
-
Bolt 是用于 Neo4j 实例和驱动程序之间交互的协议。默认监听 7687 端口。
- ACID
-
原子性 (Atomicity)、一致性 (Consistency)、隔离性 (Isolation)、持久性 (Durability) (ACID) 是保证数据库事务可靠处理的属性。符合 ACID 的 DBMS 确保即使发生故障,数据库中的数据也能保持准确和一致。
- 最终一致性
-
如果一个数据库能保证所有集群成员在某个时间点都存储了数据的最新版本,则该数据库具有最终一致性。
- 因果一致性
-
如果读写查询被集群中的每个成员以相同的顺序看到,则数据库具有因果一致性。这比最终一致性更强。
- NULL
-
空标记不是一种类型,而是缺失值的占位符。更多信息,请参阅 Cypher → 使用
null。 - 事务
-
事务是一个工作单元,要么被提交,要么在失败时被回滚。例如银行转账:它涉及多个步骤,但它们必须全部成功或全部撤销,以避免钱从一个账户扣除却未存入另一个账户的情况。
- 背压
-
背压是对数据流的抵抗力。它确保客户端不会被过快发送的数据压垮,从而超出其处理能力。
- 书签
-
书签是代表数据库某种状态的标记。通过将一个或多个书签与查询一起传递,服务器将确保在所表示的状态建立之前,该查询不会被执行。
- 事务函数
-
事务函数是由
execute_read或execute_write调用执行的回调。如果发生服务器故障,驱动程序会自动重新执行该回调。 - 驱动程序 (Driver)
-
一个
Driver对象保存了与 Neo4j 数据库建立连接所需的详细信息。