开发者中心 » 编程语言 » Python » 代码指南 » Python Neo4j 代码驱动

Python Neo4j 代码驱动

此处展示的代码使用了官方的 Neo4j Python 驱动程序,您可以在此 gist 中找到:https://gist.github.com/jalakoo/9e0ff836bc75e1a2b9945baf2eede4c4

本示例使用了一个公共演示数据库,其中包含含有 Book(书籍)节点及其相关实体的 goodreads 数据集。 

创建项目文件

创建一个名为 app.py 的文件。

接下来,创建并启动一个虚拟环境,然后下载 neo4j 驱动程序。

python -m venv venv
source venv/bin/activate
pip install neo4j

连接到数据库

app.py 文件中,要连接到 Neo4j,您需要连接 URI、用户名、密码和数据库名称。本示例中提供了演示服务器的凭据。

from neo4j import GraphDatabase

# Read-only credentials
URI = "neo4j+s://demo.neo4jlabs.com"
USERNAME = "goodreads"
PASSWORD = "goodreads"
DATABASE = "goodreads"

neo4j+s:// 协议方案确保了与数据库的加密连接。

运行查询

execute_query API 是使用 Python 驱动程序运行查询的推荐方式。它会自动管理会话、事务和重试,从而减少样板代码。

在本示例中,我们定义了一个接受 Cypher 查询语句和参数字典的 main 函数。

# 1. Using the new `execute_query` API
def main(query, params):
    with GraphDatabase.driver(URI, auth=(USERNAME, PASSWORD)) as driver:
        records, summary, keys = driver.execute_query(
            query, 
            parameters_ = params,
            database_ = DATABASE
        )

        # Convert records into Python dictionaries
        return [record.data() for record in records]

该方法返回三个值:

  • records → 实际的查询结果
  • summary → 关于查询执行的元数据(例如返回了多少条结果)
  • keys → 查询返回的属性名称

大多数情况下,您只需要关注 records(记录)。在此处,每条记录都被转换为字典,以便在 Python 中更方便地使用。

查询示例

以下示例会创建或复用一个具有指定标题的 Book 节点,并最多返回 10 条结果。

if __name__ == "__main__":
    query = """
    MERGE (b:Book {title: $title})
    RETURN b.title as title
    LIMIT $limit
    """
    params = {
        "title": "The Great Gatsby",
        "limit": 10
    }
    print(main(query, params))

执行后,该脚本将打印出一个包含书籍标题的字典列表,展示了如何传递参数并获取结果。

运行脚本

您可以在命令行中运行该脚本:

python neo4j_example.py

请将 neo4j_example.py 替换为您保存代码的文件名。

资源

分享文章