赞
踩
neo4j-driver简介: neo4j-driver是一个python中的package, 作为python中neo4j的驱动, 帮助我们在python程序中更好的使用图数据库.
pip install neo4j-driver
from neo4j import GraphDatabase
# 关于neo4j数据库的用户名,密码信息已经配置在同目录下的config.py文件中
from config import NEO4J_CONFIG
driver = GraphDatabase.driver( **NEO4J_CONFIG)
# 直接用python代码形式访问节点Company, 并返回所有节点信息
with driver.session() as session:
cypher = "CREATE(c:Company) SET c.name='黑马程序员' RETURN c.name"
record = session.run(cypher)
result = list(map(lambda x: x[0], record))
print("result:", result)
输出效果:
result: 黑马程序员
如果一组数据库操作要么全部发生要么一步也不执行,我们称该组处理步骤为一个事务, 它是数据库一致性的保证.
使用事务的演示:
def _some_operations(tx, cat_name, mouse_name):
tx.run("MERGE (a:Cat{name: $cat_name})"
"MERGE (b:Mouse{name: $mouse_name})"
"MERGE (a)-[r:And]-(b)",
cat_name=cat_name, mouse_name=mouse_name)
with driver.session() as session:
session.write_transaction(_some_operations, "Tom", "Jerry")
输出效果:
# -*- coding: utf-8 -*- from py2neo import Node, Graph, Relationship,NodeMatcher # 将excel中数据存入neo4j class DataToNeo4j(object): def __init__(self): link = Graph("http://localhost:7474", username="neo4j", password="123456") # 建立连接 self.graph = link self.buy = 'buy' # 定义label self.sell = 'sell' # 定义label self.graph.delete_all() # 清空数据库 self.matcher = NodeMatcher(link) # 匹配关系的方法 """ 示例 node3 = Node('animal' , name = 'cat') node4 = Node('animal' , name = 'dog') node2 = Node('Person' , name = 'Alice') node1 = Node('Person' , name = 'Bob') r1 = Relationship(node2 , 'know' , node1) r2 = Relationship(node1 , 'know' , node3) r3 = Relationship(node2 , 'has' , node3) r4 = Relationship(node4 , 'has' , node2) self.graph.create(node1) self.graph.create(node2) self.graph.create(node3) self.graph.create(node4) self.graph.create(r1) self.graph.create(r2) self.graph.create(r3) self.graph.create(r4) """ # 建立节点 def create_node(self, node_buy_key,node_sell_key): for name in node_buy_key: buy_node = Node(self.buy, name=name) self.graph.create(buy_node) for name in node_sell_key: sell_node = Node(self.sell, name=name) self.graph.create(sell_node) # 建立关系 def create_relation(self, df_data): m = 0 for m in range(0, len(df_data)): try: print(list(self.matcher.match(self.buy).where("_.name=" + "'" + df_data['buy'][m] + "'")), list(self.matcher.match(self.sell).where("_.name=" + "'" + df_data['sell'][m] + "'"))) relation = Relationship(self.matcher.match(self.buy).where("_.name=" + "'" + df_data['buy'][m] + "'").first(), df_data['money'][m], self.matcher.match(self.sell).where("_.name=" + "'" + df_data['sell'][m] + "'").first() ) self.graph.create(relation) except AttributeError as e: print(e, m)
# -*- coding: utf-8 -*- from dataToNeo4jClass.DataToNeo4jClass import DataToNeo4j import os import pandas as pd #pip install py2neo==5.0b1 注意版本,要不对应不了【可以先阅读下文档:https://py2neo.org/v4/index.html】 invoice_data = pd.read_excel('./Invoice_data_Demo.xls', header=0) print("invoice_data = {}".format(invoice_data)) # 从excel文件中抽取“节点”数据 def data_extraction(): node_buy_key, node_sell_key = [], [] for i in range(0, len(invoice_data)): # 取出购买方名称到list node_buy_key.append(invoice_data['购买方名称'][i]) for i in range(0, len(invoice_data)): # 取出销售方名称到list node_sell_key.append(invoice_data['销售方名称'][i]) node_buy_key, node_sell_key = list(set(node_buy_key)), list(set(node_sell_key)) # 去重 return node_buy_key, node_sell_key # 从excel文件中抽取“关系”数据 def relation_extraction(): links_dict, sell_list, money_list, buy_list = {}, [], [], [] for i in range(0, len(invoice_data)): money_list.append(invoice_data[invoice_data.columns[19]][i])#金额 sell_list.append(invoice_data[invoice_data.columns[10]][i])#销售方方名称 buy_list.append(invoice_data[invoice_data.columns[6]][i])#购买方名称 sell_list, buy_list, money_list = [str(i) for i in sell_list], [str(i) for i in buy_list], [str(i) for i in money_list] # 将数据中int类型全部转成string links_dict['buy'], links_dict['money'], links_dict['sell']= buy_list, money_list, sell_list # 整合数据,将三个list整合成一个dict df_data = pd.DataFrame(links_dict) # 将数据转成DataFrame print("df_data= {}".format(df_data)) return df_data relation_extraction() create_data = DataToNeo4j() create_data.create_node(data_extraction()[0], data_extraction()[1]) create_data.create_relation(relation_extraction())
输出结果:
在这里插入代码片
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。