【博学谷学习记录】超强总结,用心分享丨人工智能 AI项目 python中Cypher使用

目录

    • 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基础的情况下,上手还是比较轻松的,多练即可熟记

你可能感兴趣的:(学习笔记,学习,python,neo4j)