neo4jをpythonから利用してGraphDBで遊ぶ

graphdbをpythonから遊びます。

利用するグラフDBはneo4jで、操作するクライアントはpythonのneo4jrestclientパッケージを利用しました。

OSはArchlLinuxでやっていますが他の環境でもまあ同じだと思います。

インストール

archのAURにあったのでyaourtからインストールします。

yaourt -S neo4j-community

パッケージマネージャからインストールできない場合、公式サイトからtar.gzで圧縮されたバイナリをダウンロードします。

ポート設定をいじります。

dbms,connector.http.addressはデフォルトでは0.0.0.0となっていますがリモートサーバーで動かしているならそのIPをいれましょう。

ポート番号はデフォルトの7474でいいと思いますが場合によってはポートが既にバインドされていると言われるので変更する必要がある場合は変更しましょう。

sudo nano /etc/neo4j/neo4j.conf

# dbms.connector.bolt.addressのところと
# dbms.connector.http.addressのところをプライベートアドレスに書き換える

再起動

sudo systemctl restart neo4j

これでhttp://{server ip}:7474にアクセスしてneo4jのポータルが表示されればOKです。

パスワードを設定しましょう。

pythonからデータをいれる

neo4jrestclientをインストールします。

pip install neo4jrestclient

以下のコードでデータを入れます。

# グラフDBに接続
url = 'http://{server ip}:7474/db/data'
gdb = GraphDatabase(url, username='neo4j', password='{password}')

# ノード1を作成
from_node = gdb.nodes.create(name='ノード1')
from_node.labels.add('Data')
# ノード2を作成
to_node = gdb.nodes.create(name='ノード2')
to_node.labels.add('Data')
# 関係性を記述
from_node.relationships.create("Knows",to_node,cost = 2)

あとは以下のcypher queryをポータルからうちこめばデータを表示できます。

MATCH (n)-[r]-(m) RETURN n, r, m

データをすべて消去する場合は以下のクエリ

MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r

参考文献

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください