neo4j数据库导入代码示例
郝伟 2021/03/05
本代码演示了如何将neo4j的节点和查询结果导出,核心要点包括以下几条:
# -*- coding: utf-8 -*- """ 日期:2021/03/05 作者:郝伟老师 简介:生成指定neo4j连接数据库一些操作演示。 参考: [1] The session API, https://neo4j.com/docs/driver-manual/current/session-api/ """ # import random # from py2neo import Graph,Node,Relationship from neo4j import GraphDatabase def show_labels(session): ''' 演示如何获得数据库的所有标签 ''' print(' call db.labels '.center(60, '*')) cql= 'call db.labels();' ret=session.run(cql) for rec in ret: for item in rec: print(' ', type(item), item) def show_nodes(session): ''' 演示如何处理所有的节点 ''' print(' process nodes '.center(60, '*')) nodes=session.run('Match (n:人) Return n Limit 10') for node in nodes: print('*'*60) for key in node["n"]: print(key, node["n"][key]) def show_edges(session): ''' 演示如何处理所有的关系 ''' print(' process edges '.center(60, '*')) edges=session.run('Match p=(n1:人)-[r]-(n2) Return p,n1,r,n2 Limit 10') for edge in edges: print('*'*60) r = edge['r'] for key in r: print('key =', key) print('r[key] =', r[key]) print('r.id =', r.id) for n in r.nodes: print('\t', n) # 公司 <Relationship id=4011092 nodes=(<Node id=1432404 labels=frozenset({'员工', '留学生', '硕士', '教师', '人', '丈夫', '博士', '学生', '父亲'}) properties={'name': '郝伟', '生日': '1981/07/13', '结婚纪念日': '12/28', '所在城市': '合肥', '性别': '男'}>, <Node id=1432432 labels=frozenset({'员工', '人'}) properties={'name': '李岩', '所在城市': '北京', '性别': '男'}>) type='同事' properties={'公司': '北京华云安'}> print('Connecting 121.196.157.14:7687 ...') driver=GraphDatabase.driver('bolt://121.196.157.14:7687', auth=('neo4j', 'hd7iu2_X@v4u')) print('Connected') session=driver.session() show_labels(session) show_nodes(session) show_edges(session) session.close() print('closed connection.')
Connecting 121.196.157.14:7687 ... Connected ********************** call db.labels ********************** <class 'str'> Person <class 'str'> People <class 'str'> vul <class 'str'> vulnerability <class 'str'> software <class 'str'> addressRange <class 'str'> address <class 'str'> flow <class 'str'> malware <class 'str'> IP <class 'str'> port <class 'str'> DNSName <class 'str'> Address <class 'str'> ip <class 'str'> host <class 'str'> account <class 'str'> user <class 'str'> attack <class 'str'> attacker <class 'str'> Worker <class 'str'> Emploree <class 'str'> Father <class 'str'> Husband <class 'str'> Son <class 'str'> 人 <class 'str'> 教师 <class 'str'> 员工 <class 'str'> 博士 <class 'str'> 父亲 <class 'str'> 丈夫 <class 'str'> 儿子 <class 'str'> 母亲 <class 'str'> 妻子 <class 'str'> 学生 <class 'str'> 公司 <class 'str'> 科技公司 <class 'str'> 企业 <class 'str'> Boss <class 'str'> 老板 <class 'str'> 大学 <class 'str'> 单位 <class 'str'> 硕士 <class 'str'> 高校 <class 'str'> 留学生 <class 'str'> 导师 <class 'str'> 教授 <class 'str'> 学校 <class 'str'> 小学 <class 'str'> 高新企业 ********************** process nodes *********************** ************************************************************ name 沈传宝 性别 男 ************************************************************ name 马维士 所在城市 北京 性别 男 ************************************************************ name 郝伟 生日 1981/07/13 结婚纪念日 12/28 所在城市 合肥 性别 男 ************************************************************ name 松崎公纪 国籍 西班牙 性别 男 ************************************************************ name Onofre Coll Luise 国籍 西班牙 性别 男 ************************************************************ name Valade Ganblavesi 国籍 俄罗斯 性别 男 ************************************************************ name 郝承志 所在城市 淮南 性别 男 ************************************************************ name 李岩 所在城市 北京 性别 男 ************************************************************ name 李春艳 结婚纪念日 12/28 所在城市 合肥 性别 女 ********************** process edges *********************** ************************************************************ key = 创建 r[key] = 2019 r.id = 4011106 <Node id=1432353 labels=frozenset({'Boss', '员工', '人', '老板'}) properties={'name': '沈传宝', '性别': '男'}> <Node id=1432412 labels=frozenset({'企业', '单位', '公司', '高新企业', '科技公司'}) properties={'name': '北京华云安信息技术有限公司', '所在城市': '北京'}> ************************************************************ key = 创建 r[key] = 2019-2021 r.id = 4011108 <Node id=1432412 labels=frozenset({'企业', '单位', '公司', '高新企业', '科技公司'}) properties={'name': '北京华云安信息技术有限公司', '所在城市': '北京'}> <Node id=1432353 labels=frozenset({'Boss', '员工', '人', '老板'}) properties={'name': '沈传宝', '性别': '男'}> ************************************************************ key = 类型 r[key] = 总经理 r.id = 4011109 <Node id=1432353 labels=frozenset({'Boss', '员工', '人', '老板'}) properties={'name': '沈传宝', '性别': '男'}> <Node id=1432412 labels=frozenset({'企业', '单位', '公司', '高新企业', '科技公司'}) properties={'name': '北京华云安信息技术有限公司', '所在城市': '北京'}> ************************************************************ key = 创建 r[key] = 2019-2021 r.id = 4011107 <Node id=1432353 labels=frozenset({'Boss', '员工', '人', '老板'}) properties={'name': '沈传宝', '性别': '男'}> <Node id=1432412 labels=frozenset({'企业', '单位', '公司', '高新企业', '科技公司'}) properties={'name': '北京华云安信息技术有限公司', '所在城市': '北京'}> ************************************************************ key = 公司 r[key] = 北京华云安 r.id = 4011090 <Node id=1432404 labels=frozenset({'员工', '留学生', '硕士', '教师', '人', '丈夫', '博士', '学生', '父亲'}) properties={'name': '郝伟', '生日': '1981/07/13', '结婚纪念日': '12/28', '所在城市': '合肥', '性别': '男'}> <Node id=1432402 labels=frozenset({'员工', '人'}) properties={'name': '马维士', '所在城市': '北京', '性别': '男'}> ************************************************************ key = 公司 r[key] = 北京华云安 r.id = 4011094 <Node id=1432402 labels=frozenset({'员工', '人'}) properties={'name': '马维士', '所在城市': '北京', '性别': '男'}> <Node id=1432432 labels=frozenset({'员工', '人'}) properties={'name': '李岩', '所在城市': '北京', '性别': '男'}> ************************************************************ key = 公司 r[key] = 北京华云安 r.id = 4011091 <Node id=1432402 labels=frozenset({'员工', '人'}) properties={'name': '马维士', '所在城市': '北京', '性别': '男'}> <Node id=1432404 labels=frozenset({'员工', '留学生', '硕士', '教师', '人', '丈夫', '博士', '学生', '父亲'}) properties={'name': '郝伟', '生日': '1981/07/13', '结婚纪念日': '12/28', '所在城市': '合肥', '性别': '男'}> ************************************************************ key = 类型 r[key] = 技术总监 r.id = 4011088 <Node id=1432402 labels=frozenset({'员工', '人'}) properties={'name': '马维士', '所在城市': '北京', '性别': '男'}> <Node id=1432412 labels=frozenset({'企业', '单位', '公司', '高新企业', '科技公司'}) properties={'name': '北京华云安信息技术有限公司', '所在城市': '北京'}> ************************************************************ key = 公司 r[key] = 北京华云安 r.id = 4011095 <Node id=1432432 labels=frozenset({'员工', '人'}) properties={'name': '李岩', '所在城市': '北京', '性别': '男'}> <Node id=1432402 labels=frozenset({'员工', '人'}) properties={'name': '马维士', '所在城市': '北京', '性别': '男'}> ************************************************************ key = 公司 r[key] = 北京华云安 r.id = 4011092 <Node id=1432404 labels=frozenset({'员工', '留学生', '硕士', '教师', '人', '丈夫', '博士', '学生', '父亲'}) properties={'name': '郝伟', '生日': '1981/07/13', '结婚纪念日': '12/28', '所在城市': '合肥', '性别': '男'}> <Node id=1432432 labels=frozenset({'员工', '人'}) properties={'name': '李岩', '所在城市': '北京', '性别': '男'}> closed connection.