分别使用Cypher与python构建neo4j图谱

Cypher /ˈsaɪ.fər/ 赛佛儿语言

  • Cypher 是 Neo4j 图数据库的 声明式查询语言。

  • 用来 创建节点、关系、查询图、更新或删除数据。

  • 语法上有点类似 SQL,但面向 图模型(节点、边、属性)。

Neo4j 增删改查:
增:
增加一个节点
create (n:Person {name:'我',age:31})
带有关系属性
create (p:Person{name:" 我 ",age:"31"})-: 包 工 程 { 金 额 :10000}->(n:Person{name:" 好 大 哥
",age:"35"})
删
create (n:Person {name:'TYD',age:31})
match (n:Person{name:"TYD"}) delete n
删除关系
match (p:Person{name:"我",age:"31"})-f:包工程->(n:Person{name:"好大哥",age:"35"})
delete f
改:
加上标签
match (t:Person) where id(t)=789 set t:好人 return t
加上属性
match (a:好人) where id(a)=789 set a.战斗力=200 return a
修改属性
match (a:好人) where id(a)=789 set a.战斗力=500 return a
查:(查操作太多啦,直接参考 neo4j 例子就好)
match (p:Person) - :包工程 -> (n:Person) return p,n
快速清空数据库:
MATCH (n)
DETACH DELETE n

上一篇博客中的demo

python与neo4j结合处理excel中的数据创建图谱

python 复制代码
# -*- coding: utf-8 -*-
from py2neo import Node, Graph, Relationship,NodeMatcher


class DataToNeo4j(object):
    """将excel中数据存入neo4j"""

    def __init__(self):
一、连接图谱,定义标签
        """建立连接"""
        link = Graph("bolt://localhost:7687", auth=("neo4j", "weixuanlv0304"))

        self 指向 刚才连接好的图
        self.graph = link
        #self.graph = NodeMatcher(link)

        # 定义label
        self.buy = 'buy'
        self.sell = 'sell'
        self.graph.delete_all()
        self.matcher = NodeMatcher(link)
        
        """
二、简单创建结点已经边关系
        1、创建结点
        node3 = Node('animal' , name = 'cat')
        node4 = Node('animal' , name = 'dog')  
        node2 = Node('Person' , name = 'Alice')
        node1 = Node('Person' , name = 'Bob')  
        2、创建边           结点2    关系     结点1
        r1 = Relationship(node2 , 'know' , node1)    
        r2 = Relationship(node1 , 'know' , node3) 
        r3 = Relationship(node2 , 'has' , node3) 
        r4 = Relationship(node4 , 'has' , node2)    
        3、create 将结点和边添加到这个图中
        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] + "'")))
                print(list(self.matcher.match(self.sell).where("_.name=" + "'" + df_data['sell'][m] + "'")))
                rel = 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(rel)
            except AttributeError as e:
                print(e, m)
            
相关推荐
野生技术架构师7 分钟前
牛客网互联网大厂 Java 高频面试题整理(持续更新)
java·开发语言
小师兄吃牛肉30 分钟前
Java语法 | 多重循环
java·开发语言·python
Han.miracle43 分钟前
MySQL InnoDB:MVCC、记录锁、间隙锁、二级索引MVCC底层原理
java·开发语言
.YM.Z1 小时前
C++——【红黑树】原理详解:定义、性质、插入变色与旋转实现
开发语言·c++
明如正午1 小时前
用 Python 一键把 ASC 文件转成 BLF(基于 python-can)
python·can·blf·asc
EchoMind-Henry1 小时前
DeepSeek换个位置,检索准确率差40.2个百分点?
人工智能·机器学习
leisoo80971 小时前
融资融券数据怎么查两融指标含义与杠杆观察方法 IG50免费开源股票数据API接口
开发语言·jvm·数据库·python·json
霸道流氓气质2 小时前
多Agent通信机制与协议设计完全指南:从FIPA-ACL到A2A/MCP的Java生产级实战
java·开发语言
Patrick在香港2 小时前
同一份脚本,mac 正常 Windows 乱码:open() 默认编码实测(附 3.15 终局)
utf-8·windows·python·macos·跨平台·编码·标准库