これは何?
- Neo4jの環境構築~デプロイの備忘録です。
- Neo4jを使い始めたい方の参考になれば幸いです。
環境
今回は、ローカルからデプロイする流れをまとめます。
- vscode
- python 3.9.13
- java 11.0.2
- Neo4j 5.1.0
※javaを入れないと動きませんので注意!(以下からダウンロードしてパスを通してください)
https://jdk.java.net/archive/
Neo4j
1. アカウント作成
2. インスタンス作成
-
インスタンスができ、クレデンシャルをダウンロードします
3. vscodeからデプロイ
-
iniファイル作成
-
デプロイ用のコードを用意
- ▶こちらの記事を参考にさせていただきました
neo4j_sample.pyファイルの中身
import configparser
from neo4j import GraphDatabase
def clear_db(tx):
tx.run('MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r')
def search_all(tx):
result = tx.run('MATCH (n) OPTIONAL MATCH (n)-[r]-() RETURN n,r')
return [r for r in result]
def add_person_node(tx, name):
tx.run('CREATE (p:Person {name: $name}) RETURN p', {'name': name})
def add_friend_relationship(tx, name, friend_name=None):
if not friend_name:
tx.run('CREATE (p:Person {name: $name}) RETURN p', {'name': name})
else:
tx.run('MATCH (p:Person {name: $name}) '
'CREATE (p)-[:FRIEND]->(:Person {name: $friend_name})',
name=name, friend_name=friend_name)
def main():
# ===== neo4jの設定取得
config = configparser.ConfigParser()
config.read('neo4j.ini')
uri = config['NEO4J']['uri']
user = config['NEO4J']['user']
password = config['NEO4J']['password']
# neo4jドライバーの作成
driver = GraphDatabase.driver(uri, auth=(user, password))
with driver.session() as session:
# データベースのクリア
session.write_transaction(clear_db)
# ノードの追加
session.write_transaction(add_person_node, 'taro')
# FRIEND関係の追加
session.write_transaction(add_friend_relationship, 'taro', 'hanako')
# 繰り返しで追加
friend_list = ['jiro', 'haruka', 'sakura']
for f in friend_list:
session.write_transaction(add_friend_relationship, 'taro', f)
# データの検索
result = session.read_transaction(search_all)
# 結果の確認
for res in result:
print(res)
if __name__ == '__main__':
main()
エラー:ルーティング情報を取得できません
-
最も手こずった箇所です
-
私の場合、python neo4j_sample.py で実行するとルーティング情報を取得できないエラーが発生しました
-
uriを +s:// から +ssc:// に変更するとエラーが消えました
- ▶こちらの記事を参考にしました
- 適切な証明書(?)をダウンロードしていないため、弾かれている模様でした。実際の業務等で使用するには、別で解決策を探す必要があります。DockerからNeo4jを立ち上げたりすれば大丈夫…⁇
学び
- ローカルでCypher Queryを書き、デプロイするところまでは流れを掴めました
- ただ、ルーティングエラーが気になるので、業務で使用するにはDockerから立ち上げる、またはNeo4jのデスクトップアプリをインストールするなどが必要そうです
- あとはCypher Queryを学ぶ必要がありますね…