连接

一旦您安装了驱动程序拥有一个运行中的 Neo4j 实例,就可以将应用程序连接到数据库了。

连接到数据库

通过创建一个 Driver 对象并提供 URL 和您的登录凭据来连接到数据库。

from neo4j import GraphDatabase

# URI examples: "neo4j://localhost", "neo4j+s://xxx.databases.neo4j.io"
URI = "{neo4j-database-uri}"
AUTH = ("{neo4j-username}", "{neo4j-password}")

with GraphDatabase.driver(URI, auth=AUTH) as driver: (1)
    driver.verify_connectivity() (2)
    print("Connection established.")
1 创建 Driver 实例仅提供访问数据库的方式信息,但实际上并未建立连接。连接是在执行第一个查询时才延迟建立的。
2 要立即验证驱动程序是否可以连接到数据库(凭据有效、版本兼容等),请在初始化驱动程序后使用 .verify_connectivity() 方法。

创建 Driver 对象和连接验证都可能引发多种不同的异常。由于错误处理可能会非常冗长,并且连接错误会阻碍任何后续任务,因此最常见的选择是让程序在连接过程中发生异常时崩溃。

Driver 对象是不可变的、线程安全的且创建成本高昂,因此您的应用程序应只创建一个实例并传递它(您可以在线程之间共享 Driver 实例)。如果您需要通过不同的用户查询数据库,请使用模拟而不创建新的 Driver 实例。如果您想更改 Driver 配置,则需要创建一个新对象。

该驱动程序还支持其他认证方法(Kerberos、bearer、自定义)。

连接到 Aura 实例

当您创建一个 Aura 实例时,您可以下载一个文本文件(所谓的Dotenv 文件),其中包含以环境变量形式表示的数据库连接信息。该文件名为 Neo4j-a0a2fa1d-Created-2023-11-06.txt

您可以手动从该文件中提取 URI 和凭据,或者使用第三方模块加载它们。为此,我们推荐使用 python-dotenv 包。

import dotenv
import os
from neo4j import GraphDatabase

load_status = dotenv.load_dotenv("Neo4j-a0a2fa1d-Created-2023-11-06.txt")
if load_status is False:
    raise RuntimeError('Environment variables not loaded.')

URI = os.getenv("NEO4J_URI")
AUTH = (os.getenv("NEO4J_USERNAME"), os.getenv("NEO4J_PASSWORD"))

with GraphDatabase.driver(URI, auth=AUTH) as driver:
    driver.verify_connectivity()
    print("Connection established.")
Aura 实例在概念上与任何其他 Neo4j 实例没有区别,因为 Aura 只是 Neo4j 的一种部署模式。通过驱动程序与 Neo4j 数据库交互时,无论是 Aura 实例还是其他部署方式,都没有区别。

关闭连接

始终关闭 Driver 对象以释放所有已分配的资源,即使连接不成功或发生运行时错误也是如此。可以使用 with 语句实例化 Driver 对象,或者显式调用 Driver.close() 方法。

更多连接参数

有关更多 Driver 配置参数和更多连接设置,请参阅高级连接信息

词汇表

LTS

长期支持 (LTS) 版本是指保证在数年内获得支持的版本。Neo4j 4.4 是 LTS 版本,Neo4j 5 也将有一个 LTS 版本。

Aura

Aura 是 Neo4j 的完全托管云服务。它提供免费和付费计划。

Cypher

Cypher 是 Neo4j 的图查询语言,可让您从数据库中检索数据。它类似于 SQL,但适用于图。

APOC

Awesome Procedures On Cypher (APOC) 是一个函数库(其中包含许多函数),这些函数本身无法在 Cypher 中轻松表达。

Bolt

Bolt 是 Neo4j 实例和驱动程序之间交互所使用的协议。它默认监听端口 7687。

ACID

原子性、一致性、隔离性、持久性 (ACID) 是保证数据库事务可靠处理的属性。符合 ACID 的 DBMS 确保数据库中的数据即使在发生故障时也能保持准确和一致。

最终一致性

如果数据库保证所有集群成员将在某个时间点存储数据的最新版本,则该数据库是最终一致的。

因果一致性

如果集群中的每个成员都以相同的顺序看到读写查询,则数据库是因果一致的。这比最终一致性更强。

NULL

null 标记不是一种类型,而是表示值缺失的占位符。有关更多信息,请参阅Cypher → 使用 null

事务

事务是一个工作单元,它要么整体被提交,要么在失败时被回滚。一个例子是银行转账:它涉及多个步骤,但所有步骤都必须成功或被撤销,以避免钱从一个账户中扣除但未添加到另一个账户中。

背压

背压是阻碍数据流动的力。它确保客户端不会被数据淹没,即数据流速不会超过其处理能力。

事务函数

事务函数是由 execute_readexecute_write 调用执行的回调。在服务器故障的情况下,驱动程序会自动重新执行该回调。

Driver

一个 Driver 对象包含与 Neo4j 数据库建立连接所需的详细信息。

© . All rights reserved.