1. 程式人生 > 程式設計 >python 實現查詢Neo4j多節點的多層關係

python 實現查詢Neo4j多節點的多層關係

需求:查詢出滿足3人及3案有關係的集合

# -*- coding: utf-8 -*-
from py2neo import Graph
import psycopg2

# 二維陣列查詢
def find(target,array):
 for i,val in enumerate(array):
  for j,temp in enumerate(val):
   if temp == target:
    return True;  
 return False


graph = Graph(host="192.168.3.186://7474",auth=("neo4j","wabjtam123"))
data = graph.run('match data=(p:anjian)-[:參與 *2..5]-(u:anjian) with p,collect( distinct u.AJBH) as ajbhs match (p:anjian)-[:參與 *1..5]-(c:xyr) with p,ajbhs,collect(distinct c.XYRBH) as xyrbh_list,(ajbhs+p.AJBH) as ajbh_list where size(xyrbh_list)>2 and size(ajbh_list)>2 return p.AJBH as ajbh,ajbh_list,xyrbh_list')

aj = []

xyr_result = []
aj_result = []

for node in data:
 ajbh = node.get('ajbh')
 ajbh_list = node.get('ajbh_list')
 xyrbh_list = node.get('xyrbh_list')
 
 ajbh_list.append(ajbh)
 
 ajbh_list = list(set(node.get('ajbh_list')))
 xyrbh_list = list(set(node.get('xyrbh_list')))
 
 flag = True
 if len(aj_result) > 0:
  for i,val in enumerate(ajbh_list): 
   f = find(val,aj_result) 
   
   if f:
    flag = False
    break;
 
 if flag:
  if len(ajbh_list) > 2 and len(xyrbh_list) > 2:
   aj.append(ajbh) 
   
   
   aj_result.append(ajbh_list) 
   xyr_result.append(xyrbh_list)
   
   
   print('MATCH p=(:anjian{AJBH:"'+ajbh+'"})-[*]-() RETURN p LIMIT 25')
   name = str(len(xyrbh_list)) + "人" + str(len(ajbh_list)) + "案" 
   print(name)

print(len(aj_result))
print(aj)
print('----------------------------')
print(aj_result)

conn = psycopg2.connect(database="zfgfh",user="postgres",password="postgres",host="192.168.3.202",port="5432")
cursor = conn.cursor()
 
for ajbh in aj_result:
 for temp in ajbh:
  insert_sql = "insert into test.gm (\"ajbh\") values ('%s')"
  insert_sql = insert_sql % temp
  print(insert_sql)
  # 插入
  cursor.execute(insert_sql)
# 提交
conn.commit() 
cursor.close() # 關閉Cursor
conn.close() # 關閉資料庫


6人3案
4人5案
3人6案
11人3案
3人13案
6人46案
8人4案
5人4案
7人4案
28人17案
4人4案
3人8案
4人4案
8人3案
6人6案
5人4案
4人6案
19人77案
4人22案
4人14案
4人5案
9人5案
12人8案
4人3案
17人4案
5人7案
18人30案
7人11案
3人22案
20人12案
30
['A2301260500002019020002','A2301096000002018040010','A2301246400002018060001','A2301270500002018040003','A2301085100002018100001','A2301062020012018100099','A2301830517002018090003','A2301290501002019040001','A2301240500002018080001','A2301260200002018090006','A2301821414022018011647','A2301000514012018090001','A2301245100002018050014','A2301004908002018110004','A2301295500002018110005','A2301270300002018090005','A2301848900002018070017','A2301210504002018080011','A2301004902002018110002','A2301810500002018110038','A2301025103002018120002','A2301290500002019020003','A2301096000002018060043','A2301260200002018060002','A2301810500002018090002','A2301815100002018060014','A2301820506002018070006','A2301037200002018100154','A2301849000002018090001','A2301280200002018110002']
----------------------------
['A2301260500002019030006','A2301260500002019030007','A2301260500002019020002']
['A2301095200002018060039','A2301096000002018050002','A2301096000002018060009','A2301095200002018070016','A2301096000002018040010']
['A2301246400002018050003','A2301245200002018060007','A2301236400002018060005','A2301245200002018060003','A2301246400002018060002','A2301246400002018060001']
['A2301270500002018040003','A2301270500002018040004','A2301270500002018040005']
['A2301080506002018120002','A2301080506002018120001','A2301080506002018120011','A2301080506002018120004','A2301080506002018120010','A2301080506002018120013','A2301080506002018120005','A2301080506002018120012','A2301080506002018120007','A2301080506002018120006','A2301080506002018120003','A2301080506002018120009']
['A2301060504002018110006','A2301060504002018110005','A2301060504002018110028','A2301060504002018110026','A2301060504002018110036','A2301060504002018110035','A2301060504002018110030','A2301060504002018110003','A2301061723042018103961','A2301060504002018110024','A2301060504002018110004','A2301060504002018110025','A2301060504002018110044','A2301063010412018100861','A2301060504002018110022','A2301060504002018110031','A2301060504002018110038','A2301060504002018110007','A2301060504002018110032','A2301060504002018110009','A2301060504002018110039','A2301063011482018102790','A2301060504002018110029','A2301060504002018110021','A2301060504002018100001','A2301060504002018110015','A2301060504002018110043','A2301060504002018110011','A2301060504002018110040','A2301060504002018110023','A2301060504002018110027','A2301060504002018110037','A2301060504002018110014','A2301060504002018110033','A2301060504002018110002','A2301060504002018110041','A2301060504002018110008','A2301060504002018110001','A2301060504002018110010','A2301060504002018100002','A2301060504002018110019','A2301060504002018120004','A2301060504002018110018','A2301060504002018110020','A2301060504002018110034']
['A2301830517002018090003','A2301830517002018090005','A2301830517002018090006','A2301830517002018090004']
['A2301290501002019040001','A2301290501002019040002','A2301290501002019030002','A2301290501002019040004']
['A2301240500002018080001','A2301240500002018080004','A2301240500002018080003','A2301240500002018080002']
['A2301260200002018100006','A2301260200002018090002','A2301260200002018100013','A2301260200002018100008','A2301260200002018100003','A2301260200002018100001','A2301260200002018100010','A2301260200002018100005','A2301260200002018100012','A2301260200002018100002','A2301260200002018090004','A2301260200002018100011','A2301260200002018090003','A2301260200002018100014','A2301260200002018090005','A2301260200002018100007']
['A2323037100002018120006','A2301827600002018090005','A2301820209332018024067']
['A2301000514012018090001','A2301230500002018060001','A2301000514012018110004','A2301230300002018110005','A2301230500002018050005','A2301000514012019010001','A2301000514012018090002','A2301000514012018100001']
['A2301245100002018050014','A2301245100002018070018','A2301286100002018050005','A2301286100002018060002']
['A2303016200002018100001','A2301004908002018110006']
['A2301295500002018110008','A2301295500002018110006','A2301295500002018110003','A2301295500002018110007','A2301002104002018100007']
['A2301270300002018100004','A2301270300002018100002','A2301270300002018100001','A2301270300002018090005']
['A2301848900002018070017','A2301845700002018070027','A2301840502002018070002','A2301848800002018070024','A2301840502002018070003','A2301840502002018070001']
['A2301210504002018120003','A2301210504002018120019','A2301210504002018120013','A2301210504002018080007','A2301210504002018080021','A2301210504002018080015','A2301210504002018120017','A2301210504002018120045','A2301210504002018080014','A2301210504002018120049','A2301210504002018080019','A2301210504002018120028','A2301210504002018080004','A2301210504002018120029','A2301210504002018120051','A2301210504002018110005','A2301210504002018120023','A2301210504002018120043','A2301210504002018120044','A2301210504002018120041','A2301210504002018120014','A2301210504002018120032','A2301210504002018080003','A2301210504002018110006','A2301210504002018080009','A2301210504002018110004','A2301210504002018110003','A2301210504002018120038','A2301210504002018120039','A2301210504002018120015','A2301210504002018120011','A2301210504002018120036','A2301210504002018080010','A2301210504002018120048','A2301210504002018120025','A2301210504002018120006','A2301210504002018120012','A2301210504002018080013','A2301210504002018120022','A2301210504002018080017','A2301210504002018120008','A2301210504002018120046','A2301210504002018120052','A2301210504002018110007','A2301210504002018120024','A2301210504002018080022','A2301210504002018080005','A2301210504002018120050','A2301210504002018080002','A2301210504002018120009','A2301210504002018120031','A2301210504002018120033','A2301210504002018120042','A2301210504002018120035','A2301210504002018120040','A2301210504002018120026','A2301210504002018120005','A2301210504002018120030','A2301210504002018120027','A2301210504002018120018','A2301210504002018120010','A2301210504002018120016','A2301210504002018120002','A2301210504002018120001','A2301210504002018120034','A2301210504002018120007','A2301210504002018120037','A2301210504002018120004','A2301210504002018080008','A2301210504002018080018','A2301210504002018120021','A2301210504002018080020','A2301210504002018120047','A2301210504002018080006','A2301210504002018120020','A2301210504002018080016']
['A2301004906002019010005','A2301004902002018120001','A2301004902002018100006','A2301004908002018110002','A2301004906002019010003','A2301004904002019010003','A2301004908002019010002','A2301004902002018110003','A2301004908002019010004','A2301004908002018110001','A2301004905002019010008','A2301004904002018100004','A2301004908002019010005','A2301004904002019010004','A2301004909002019010001','A2301004905002019010007','A2301004908002019010003','A2301004904002019010002','A2301004908002018100002','A2301004902002018110001','A2301004906002019010004']
['A2301810500002018120044','A2301810500002018110039','A2301810500002018110041','A2301810500002018120034','A2301810500002018120055','A2301810500002018120052','A2301810500002018120053','A2301810500002018120032','A2301810500002018120054','A2301810500002018120035','A2301810500002018110040','A2301810500002018120033','A2301810500002018120056']
['A2301025103002019010002','A2301025103002018120004','A2301025103002018120005','A2301025103002019010001']
['A2301290500002019020004','A2301293014052013074923','A2301292809352016111088','A2301290500002019030001']
['A2301090506002018090006','A2301096000002018060044','A2301090506002018090002','A2301090506002018090004','A2301096000002018060045','A2301090506002018090005','A2301090506002018090003','A2301096000002018060043']
['A2301260200002018070019','A2301260200002018070001']
['A2301810500002018100008','A2301810500002018070015','A2301810500002018100006']
['A2301815100002018060014','A2301847300002018070003','A2301837900002018060010','A2301847300002018070002','A2301835600002018060007','A2301815500002018050010','A2301817900002018060001']
['A2301820502002018120006','A2301820502002019020003','A2301820502002018110004','A2301820502002018120003','A2301820502002018120014','A2301820502002018120001','A2301820502002018120002','A2301820502002018110005','A2301820502002018110007','A2301820502002018110010','A2301820502002018110002','A2301820502002018120004','A2301820502002018120009','A2301820502002018110012','A2301820502002018110014','A2301820502002018110013','A2301820502002018110011','A2301820502002019020002','A2301820502002018120005','A2301820502002018110006','A2301820502002019010001','A2301820502002018120013','A2301820502002019020001','A2301820502002018110009','A2301820502002018110008','A2301820502002018120011','A2301820502002018120010','A2301820502002018110001','A2301820502002018110003']
['A2301025600002018120006','A2301031714062013011545','A2301025700002018120027','A2301032513122013013630','A2301025700002018120050','A2301025600002018120051','A2301032816032012120005','A2301030916252013014087','A2301026600002018120008','A2301025600002018120044']
['A2323015500002018100003','A2301849000002018090018','A2323015700002018100005','A2301848700002018090013','A2323015500002018100004','A2301265300002018090007','A2301845700002018090004','A2301265500002018090005','A2301845700002018090019','A2323015700002018100004','A2301265300002018090006','A2323016100002018100003','A2301849000002018090008','A2301265300002018090011','A2301265300002018090005','A2301849000002018090019','A2301265500002018090006','A2301265300002018090010','A2301265300002018090009','A2301265300002018090008','A2301848700002018090006']
['A2301280200002018110003','A2301280200002018110011','A2301280200002018110013','A2301280200002018110005','A2301280200002018110010','A2301280200002018110007','A2301280200002018110012','A2301280200002018110002','A2301280200002018110008','A2301280200002018110009','A2301280200002018110014','A2301280200002018110006']

以上這篇python 實現查詢Neo4j多節點的多層關係就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。