見出し画像

Neo4j GraphDBブートキャンプ完全版: Python (セクション45/49)

  • PythonとNeo4jを連携させる方法について、公式のNeo4j Pythonドライバーを使用して説明。

  • Cypherクエリの実行方法と、CSVファイルからのデータ読み込みによるノードとリレーションシップの作成方法を示す。

  • PythonとNeo4jの統合により、強力なグラフベースのアプリケーション構築の可能性を提示。

2024年版のComplete Neo4j GraphDB Bootcampのセクション45では、PythonとNeo4jの統合について深く掘り下げています。この強力な組み合わせにより、Pythonの柔軟性と広範なライブラリを活用しつつ、Neo4jの堅牢なグラフデータベース機能を利用することができます。この2つのテクノロジーをシームレスに連携させる方法を見ていきましょう。

Neo4j用のPythonドライバー

PythonとNeo4jを連携させるには、主に2つのドライバーオプションがあります:

  1. Py2neo: これは、Neo4j用の人気のある非公式のPythonドライバーです。Neo4jデータベースとやり取りするPythonicな方法を提供します。

  2. Neo4j Pythonドライバー (公式): これは、Neo4jが開発・維持している公式のPythonドライバーです。Neo4jデータベースを操作するネイティブなPythonインターフェイスを提供します。

このセクションでは、公式のNeo4j Pythonドライバーの使用に焦点を当てます。インストールにはpipを使用できます:

pip3 install neo4j

Neo4jへの接続

接続を確立する前に、Neo4jデータベースが起動していることを確認してください。接続URL、ユーザー名、パスワードが必要になります。

以下は、PythonでNeo4jに接続する方法です:

from neo4j import GraphDatabase

uri = "bolt://localhost:7687"
auth = ("neo4j", "your_password")

with GraphDatabase.driver(uri, auth=auth) as driver:
    driver.verify_connectivity()

`"your_password"`は実際のNeo4jパスワードに置き換えてください。このコードスニペットは、ドライバーインスタンスを作成し、Neo4jデータベースへの接続を検証します。

Cypherクエリの実行

接続が確立されたら、セッションの`run()`メソッドを使ってCypherクエリを実行できます。例を示します:

query = "MATCH (n) RETURN n LIMIT 3"

with driver.session() as session:
    result = session.run(query)
    for record in result:
        print(record)

このコードは、すべてのノードにマッチし、最初の3つの結果を返す単純なCypherクエリを実行します。結果はループを使って出力されます。

データの読み込みと処理

提供されたJupyter notebookでは、CSVファイルからデータを読み込み、Cypherクエリを使ってノード間のリレーションシップを作成する例が示されています。スニペットを示します:

cypher_query = """
LOAD CSV WITH HEADERS FROM "file:///customers.csv" AS row
MERGE (customer:Customer {customerID: row.customerID, customerName: row.companyName})

LOAD CSV WITH HEADERS FROM "file:///employees.csv" AS row
MERGE (employee:Employee {employeeID: row.employeeID, employeeName: row.firstName})

MATCH (order {orderID: order.orderID})
MATCH (shipper {shipperID: shipper.shipperID})  
MATCH (customer {customerID: customer.customerID})
MATCH (employee {employeeID: employee.employeeID})
WHERE order.shipperID = shipper.shipperID AND order.customerID = customer.customerID  
MERGE (shipper)-[:DELIVERED]->(order)<-[:PLACED]-(customer)
MERGE (employee)-[:FULFILLED]->(order)
"""

with driver.session() as session:
    result = session.run(cypher_query)

このCypherクエリは、`customers.csv`と`employees.csv`ファイルからデータを読み込み、対応するノードを作成し、一致するIDに基づいて`Order`、`Shipper`、`Customer`、`Employee`ノード間のリレーションシップを確立します。

まとめ

PythonとNeo4jの統合により、強力なグラフベースのアプリケーションを構築するための可能性が広がります。公式のNeo4j Pythonドライバーを活用することで、Neo4jデータベースにシームレスに接続し、Cypherクエリを実行し、Pythonの豊富なライブラリとツールを使って結果を処理することができます。

接続の詳細を安全に処理し、終了したらドライバーを閉じることを忘れないでください。この基盤があれば、PythonとNeo4jを使って複雑なグラフトラバーサル、データ分析、機械学習パイプラインを作成することができます。

PythonとNeo4jでのグラフ探索を楽しんでください!

「超本当にドラゴン」へ

この記事が気に入ったらサポートをしてみませんか?