首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用python从neo4j获得json响应

使用python从neo4j获得json响应
EN

Stack Overflow用户
提问于 2017-11-15 05:48:33
回答 2查看 3.3K关注 0票数 2

我想将neo4j中的密码查询结果转换成JSON格式。

我目前正在使用neo4j库连接和查询图形。我可以,但是将结果转换为JSON很麻烦,因此出现了这个问题。

以下是我的当前代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

我得到以下输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{ n : <Node id=44567 labels={'Person'} properties={'name': 'ABC'}> }
ABC
{ m : <Node id=34745 labels={'Organization'} properties={'name': 'XYZ'}> }
XYZ

如您所见,输出将给出Node对象。我可以得到properties,但不能得到labelsid。我也许能够得到idlabels,但是它变得非常复杂和麻烦。

现在,我需要的JSON格式是非常具体的,我不希望以特定的格式得到结果。

假设这是我需要的基本JSON格式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "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"
                    }
                }]
            }
        }]
    }],
}

这里的代码,不是我将来将要使用的代码,它只是我写来问这个问题的一个演示代码。

因此,我在这里所问的基本上是一种在运行密码查询之后从neo4j获取JSON响应的方法,而不是解析结果,然后生成一个JSON。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-17 05:26:48

不知道你的意思是不是很麻烦的拿到标签和身份证.我的意思是,如果你有一个节点对象,那么id是o.id,标签是o.labels,不是吗?

无论如何,问题是Cypher可以返回许多不同的东西(离散值表、节点、关系、路径、子图、.)当通过驱动程序访问数据库时,必须由您来决定如何处理结果。因此,您将得到一个结果集(从数据库的角度来看,结果集可以包含任何内容),并且必须自己进行后处理(因为只有您知道自己实际要求的是什么)。

如果您真的想要一个类似JSON的结果,可以通过HTTP端点查询数据库。不过,这仍然需要从你的终端进行大量的处理。

希望这会有所帮助(或者至少能解释为什么事情是这样的)。

你好,汤姆

票数 0
EN

Stack Overflow用户

发布于 2021-06-07 21:44:47

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import json 
def get_some_data(limit=25) :
    query = 'MATCH (n:Person)--(m:Organization) RETURN n,m LIMIT ' + str(limit)
    return session.run(query)

json_data = json.dumps(get_some_data(limit=1).data())

data()以递归方式提供json格式的记录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47309120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文