Python 操作 neo4j 数据库(py2neo)
基础
参考:Neo4j 第十二篇:使用Python驱动访问Neo4j - 悦光阴 - 博客园 (cnblogs.com)
查询语法
序号 | 关键字 | 关键字作用 |
---|---|---|
1 | CREATE | 创建 |
2 | MATCH | 匹配 |
3 | RETURN | 加载 |
4 | WHERE | 过滤检索条件 |
5 | DELETE | 删除节点和关系 |
6 | REMOVE | 删除节点和关系的属性 |
7 | ORDER BY | 排序 |
8 | SET | 添加或更新属性 |
create
create(Node:Image{name:'0516151.jpg', visible:False}) # 创建节点
MATCH (cust)-[r:DO_SHOPPING_WITH]->(cc) # 创建单向关系
match
# 给对应的节点添加关系
match (image:Imageaaaa{name:"pc3.jpg"}),(typ:Label{name:"风景"}) create (image)-[r:HAS_LABEL]->(typ) return image, typ, r
remove
# 删除节点属性
match(t:Teacher) remove t.name
set
# 添加/修改节点属性
match(t:Teacher) set t.name='yyy' return t
where
序号 | 布尔运算符 | 描述 |
---|---|---|
1 | = | 它是Neo4j CQL“等于”运算符。 |
2 | <> | 它是一个Neo4j CQL“不等于”运算符。 |
3 | < | 它是一个Neo4j CQL“小于”运算符。 |
4 | > | 它是一个Neo4j CQL“大于”运算符。 |
5 | <= | 它是一个Neo4j CQL“小于或等于”运算符。 |
6 | = | 它是一个Neo4j CQL“大于或等于”运算符。 |
序号 | 布尔运算符 | 描述 |
---|---|---|
1 | AND | 它是一个支持AND操作的Neo4j CQL关键字。 |
2 | OR | 它是一个Neo4j CQL关键字来支持OR操作。 |
3 | NOT | 它是一个Neo4j CQL关键字支持NOT操作。 |
4 | XOR | 它是一个支持XOR操作的Neo4j CQL关键字。 |
# 使用where
MATCH (cust:Customer),(cc:CreditCard)
WHERE cust.id = "1001" AND cc.id= "5001"
CREATE (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(cc)
RETURN r
# 有必要补充一下,可以不使用WHERE达到WHERE的一些效果,比如
MATCH p=(m:Bot{id:123})<-[:BotRelation]->(:Bot) RETURN p
order by
match(s:Student) return s order by s.id desc,s.name
delete
# 删除对应节点和关系
MATCH (cc: CreditCard)-[rel]-(c:Customer)
DELETE cc,c,rel
索引
添加索引
CREATE INDEX ON :Person(name)
删除索引
DROP INDEX ON :Person(name)
查询创建的索引
:schema
约束
CREATE CONSTRAINT ON (n:test) ASSERT n.name IS UNIQUE
1)约束只对指定的lable下面的字段有效,其他label不受影响
2)一次只能给一个lable添加约束
事务
不用cql语句
from py2neo import Graph, Node, Relationship
g = Graph()
tx = g.begin()
a = Node("Person", name="Alice")
tx.create(a)
b = Node("Person", name="Bob")
ab = Relationship(a, "KNOWS", b)
tx.create(ab)
tx.commit()
g.exists(ab)
使用cql语句
from py2neo import Graph
g = Graph()
tx = g.begin()
try:
cql = "Create(Node:Image{})"
tx.run(cql)
cql = "Create(Node:Device{})"
tx.run(cql)
tx.commit()
except Exception as e:
print(e)
tx.rollback()
本文来自博客园,作者:糖烤栗子&,转载请注明原文链接:https://www.cnblogs.com/grocerystore/p/15414973.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库