neo4jのcypherクエリの結果をJSON形式に変換したいと考えています。pythonを使用してneo4jからjson応答を取得
現在、グラフの接続と照会にneo4jライブラリを使用しています。私はできますが、結果をJSONに変換するのは面倒です。
は、ここに私の現在のコードです:
from neo4j.v1 import GraphDatabase, basic_auth
from config import bolt_url,auth_id,auth_pass
driver = GraphDatabase.driver(bolt_url, auth=basic_auth(auth_id, auth_pass))
session = driver.session()
def get_some_data(limit=25) :
query = 'MATCH (n:Person)--(m:Organization) \
RETURN n,m LIMIT ' + str(limit)
return session.run(query)
result_some_data = get_some_data(limit=1)
gen = result_some_data.records()
for record in gen :
for k,v in record.items() :
print('{',k,':',v,'}')
print(v.get('name','meow'))
session.close
私は次の出力を取得する:あなたが見ることができるように、出力がNode
オブジェクトを与えている
{ n : <Node id=44567 labels={'Person'} properties={'name': 'ABC'}> }
ABC
{ m : <Node id=34745 labels={'Organization'} properties={'name': 'XYZ'}> }
XYZ
。 properties
を取得できますが、labels
またはid
は取得できません。私はid
とlabels
を得ることができるかもしれませんが、それは非常に複雑で非常に面倒です。
私が必要とするJSON形式は非常に限定されており、その特定の形式で結果を得ることは期待していません。
のは、これは私が必要とする基本的なJSON形式であるとしましょう:
{
"results": [{
"columns": ["n", "m"],
"data": [{
"graph": {
"nodes": [{
"id": "44567",
"labels": ["Person"],
"properties": {
"name": "ABC"
}
}, {
"id": "34745",
"labels": ["Organization"],
"properties": {
"name": "ABC"
}],
"relationships": [{
"id": "1",
"type": "WorksIn",
"startNode": "44567",
"endNode": "34745",
"properties": {
"title": "CEO"
}
}]
}
}]
}],
}
ここでのコードは、私は将来的に使用するつもりコードではありません、それは私がこれを尋ねるために書いただけのデモコードです質問。
基本的にここで私が求めているのは、結果を解析してJSONを生成するのではなく、cypherクエリを実行した後にneo4jからJSON応答を取得する方法です。あなたがラベルとIDを取得するために面倒で何を意味するか