人工智能 AI项目 python中Cypher使用

Cypher

Cypher是neo4j图数据的查询语言, 类似于mysql数据库的sql语句, 但是它允许对图形进行富有表现力和有效的查询和更新。

驱动安装

pip install neo4j-driver

使用

from neo4j import GraphDatabase

# 关于neo4j数据库的用户名,密码信息配置在同目录下的config.py文件中
# from config import NEO4J_CONFIG

NEO4J_CONFIG = {
    "uri": "neo4j://127.0.0.1:7687",
    "auth": ("neo4j", "*********"),
    "encrypted": False,
    "max_connection_lifetime": 100
}

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:王阳明

事务操作

事务

学过数据库,SQL的话不难理解,简单说就是满足ACID的操作

  • 原子性(Atomicity)
    原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
  • 一致性(Consistency)
    事务前后数据的完整性必须保持一致。
  • 隔离性(Isolation)
    事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。
  • 持久性(Durability)
    持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响

使用

from neo4j import GraphDatabase

uri = "neo4j://127.0.0.1:7687"
driver = GraphDatabase.driver(uri,
                              auth=("neo4j", "*****"),
                              max_connection_lifetime=100)

def _some_transcation(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.execute_write(_some_transcation, "Tom", "Jerry")


# 错误用法, create (a)-[r:And]-(b) 在事务中会报错,此时前面两个merge操作并不会在库中保留结果,满足原子性
# def _some_transcation_error(tx, cat_name, mouse_name):
#     tx.run("merge (a:Cat{name: $cat_name})"
#            "merge (b:Mouse{name: $mouse_name})"
#            "create (a)-[r:And]-(b)",
#            cat_name=cat_name, mouse_name=mouse_name
#            )


# with driver.session() as session:
#     session.execute_write(_some_transcation_error, "Tom1", "Jerry1")

结果(未报错,运行正常)
在这里插入图片描述

错误日志
在这里插入图片描述

心得:cypher在有SQL基础的情况下,上手还是比较轻松的,多练即可熟记

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹏晓星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值