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()
posted @ 2021-10-16 18:54  糖烤栗子&  阅读(563)  评论(0编辑  收藏  举报