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つのドライバーオプションがあります:
Py2neo: これは、Neo4j用の人気のある非公式のPythonドライバーです。Neo4jデータベースとやり取りするPythonicな方法を提供します。
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でのグラフ探索を楽しんでください!
この記事が気に入ったらサポートをしてみませんか?