日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

[知识图谱]利用py2neo从Neo4j数据库获取数据

發(fā)布時間:2025/4/9 数据库 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [知识图谱]利用py2neo从Neo4j数据库获取数据 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1 # -*- coding: utf-8 -*- 2 3 from py2neo import Graph 4 import json 5 import re 6 7 8 class Neo4jToJson(object): 9 """知識圖譜數(shù)據(jù)接口""" 10 11 def __init__(self): 12 """初始化數(shù)據(jù)""" 13 # 與neo4j服務(wù)器建立連接 14 self.graph = Graph("http://IP//:7474", username="neo4j", password="xxxxx") 15 self.links = [] 16 self.nodes = [] 17 18 def post(self): 19 """與前端交互""" 20 # 前端傳過來的數(shù)據(jù) 21 select_name = '南京審計大學' 22 # 取出所有節(jié)點數(shù)據(jù) 23 nodes_data_all = self.graph.run("MATCH (n) RETURN n").data() 24 # node名存儲 25 nodes_list = [] 26 for node in nodes_data_all: 27 nodes_list.append(node['n']['name']) 28 # 根據(jù)前端的數(shù)據(jù),判斷搜索的關(guān)鍵字是否在nodes_list中存在,如果存在返回相應(yīng)數(shù)據(jù),否則返回全部數(shù)據(jù) 29 if select_name in nodes_list: 30 # 獲取知識圖譜中相關(guān)節(jié)點數(shù)據(jù) 31 nodes_data = self.graph.run("MATCH (n)--(b) where n.name='" + select_name + "' return n,b").data() 32 links_data = self.graph.run("MATCH (n)-[r]-(b) where n.name='" + select_name + "' return r").data() 33 self.get_select_nodes(nodes_data) 34 else: 35 # 獲取知識圖譜中所有節(jié)點數(shù)據(jù) 36 links_data = self.graph.run("MATCH ()-[r]->() RETURN r").data() 37 nodes_data = self.graph.run("MATCH (n) RETURN n").data() 38 self.get_all_nodes(nodes_data) 39 40 self.get_links(links_data) 41 42 # 數(shù)據(jù)格式轉(zhuǎn)換 43 neo4j_data = {'links': self.links, 'nodes': self.nodes} 44 neo4j_data_json = json.dumps(neo4j_data, ensure_ascii=False).replace(u'\xa0', u'') 45 return neo4j_data_json 46 47 def get_links(self, links_data): 48 """知識圖譜關(guān)系數(shù)據(jù)獲取""" 49 links_data_str = str(links_data) 50 links = [] 51 i = 1 52 dict = {} 53 # 正則匹配 54 links_str = re.sub("[\!\%\[\]\,\。\{\}\-\:\'\(\)\>]", " ", links_data_str).split(' ') 55 for link in links_str: 56 if len(link) > 1: 57 if i == 1: 58 dict['source'] = link 59 elif i == 2: 60 dict['name'] = link 61 elif i == 3: 62 dict['target'] = link 63 self.links.append(dict) 64 dict = {} 65 i = 0 66 i += 1 67 return self.links 68 69 def get_select_nodes(self, nodes_data): 70 """獲取知識圖譜中所選擇的節(jié)點數(shù)據(jù)""" 71 dict_node = {} 72 for node in nodes_data: 73 name = node['n']['name'] 74 tag = node['n']['tag'] 75 dict_node['name'] = name 76 dict_node['tag'] = tag 77 self.nodes.append(dict_node) 78 dict_node = {} 79 break 80 for node in nodes_data: 81 name = node['b']['name'] 82 tag = node['b']['tag'] 83 dict_node['name'] = name 84 dict_node['tag'] = tag 85 self.nodes.append(dict_node) 86 dict_node = {} 87 88 def get_all_nodes(self, nodes_data): 89 """獲取知識圖譜中所有節(jié)點數(shù)據(jù)""" 90 dict_node = {} 91 for node in nodes_data: 92 name = node['n']['name'] 93 tag = node['n']['tag'] 94 dict_node['name'] = name 95 dict_node['tag'] = tag 96 self.nodes.append(dict_node) 97 dict_node = {} 98 return self.nodes 99 100 101 102 if __name__ == '__main__': 103 data_neo4j = Neo4jToJson() 104 print(data_neo4j.post())

?

轉(zhuǎn)載于:https://www.cnblogs.com/skyell/p/9921284.html

總結(jié)

以上是生活随笔為你收集整理的[知识图谱]利用py2neo从Neo4j数据库获取数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。