前期准备

1. 打开PowerShell

按 Win + R
输入 powershell

正常提示符:PS C:\Users\你的用户名>

没有 PS 的通常是 CMD

2. PowerShell 运行语句

软件安装

1. python

Neo4j 当前 Python 驱动要求 Python 3.10 及以上,Python 3.11 对初学者兼容性较稳。

-> 安装 Python
-> 安装完后打开 PowerShell
-> 检查 python --version

2. Vs Code

-> 安装 VS Code
-> 安装完后打开,在左侧扩展商店里安装 Microsoft 发布的 Python 扩展

3. Neo4j Desktop

官网下载安装包 Neo4j官网
在这里插入图片描述

由于neo4j-desktop2.x版本是不提供安装页面(默认安装在C盘)。因此,需要手动设置安装路径(在终端安装)。

操作流程

一. 创建项目和虚拟环境

1. 创建项目文件夹

执行:

New-Item -ItemType Directory -Path "E:\libraries\graphmap\demo1" -Force
  • New-Item:创建新项目。
  • -ItemType Directory:创建的是文件夹。
  • -Path:指定文件夹路径。
  • -Force:文件夹已经存在时不报错,也不会删除已有内容。

进入项目文件夹:

Set-Location "E:\libraries\graphmap\demo1"
  • Set-Location:切换当前工作目录。
  • 相当于常见的 cd 命令。

检查当前目录:

Get-Location

正常应显示:

Path
----
E:\libraries\graphmap\demo1

后面所有命令都在这个目录执行。

2. 检查python环境

执行:

python --version
  • 查看安装的 Python 版本。

再检查 pip:

python -m pip --version
  • python -m:使用当前 Python 运行一个模块。
  • pip:Python 的第三方库安装工具。

3. 创建独立Python环境

执行:

python -m venv .venv
  • python -m venv:运行 Python 自带的虚拟环境模块。
  • .venv:虚拟环境文件夹名称。

执行成功后,项目中会出现:E:\libraries\graphmap\demo1\.venv

这个虚拟环境可以让demo1实例的 Python 库与其他项目隔离,防止版本互相影响。

检查激活脚本是否存在:

Test-Path .\.venv\Scripts\Activate.ps1
  • Test-Path:检查指定路径是否存在。
  • Activate.ps1:PowerShell 使用的虚拟环境激活脚本。

正常输出:True

如果输出 False,说明虚拟环境没有正确创建,重新执行:

python -m venv .venv

4. 设置 PowerShell 脚本权限

先检查:

Get-ExecutionPolicy -Scope CurrentUser

如果输出:RemoteSigned ,就不需要再设置。

否则,执行:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
  • Set-ExecutionPolicy:设置 PowerShell 脚本执行策略。
  • -Scope CurrentUser:只修改当前 Windows 用户,不影响其他用户。
  • RemoteSigned:允许本机脚本运行,对网络下载的脚本保留安全检查。

PowerShell脚本执行权限通常只需为当前Windows用户设置一次。

5. 激活虚拟环境

执行:

.\.venv\Scripts\Activate.ps1

成功后,提示符通常会变为:(.venv) PS E:\libraries\graphmap\demo1>

检查虚拟环境是否真的生效:

$env:VIRTUAL_ENV

正常输出:E:\libraries\graphmap\demo1\.venv

再检查当前 Python 路径:

python -c "import sys; print(sys.executable)"
  • -c:直接运行后面的 Python 代码。

正常应显示:E:\libraries\graphmap\demo1\.venv\Scripts\python.exe

即使前面没有显示 (.venv),只要这里显示 .venv\Scripts\python.exe,虚拟环境就是生效的。

6. 升级pip

执行:

python -m pip install --upgrade pip
  • 使用虚拟环境里的 Python。
  • 更新当前虚拟环境中的 pip。
  • 通常在新建虚拟环境、pip版本较旧或安装第三方库报错时执行一次。

7. 安装 Python 库

执行:

python -m pip install neo4j python-dotenv
  • neo4j:Python连接Neo4j数据库的官方驱动。
  • python-dotenv:从 .env 文件读取数据库地址、用户名和密码,避免把密码直接写进 Python 代码。

检查安装结果:

python -m pip show neo4j
python -m pip show python-dotenv

查看当前环境安装了哪些库:

python -m pip list

8. 使用 VS Code 打开项目

在当前 PowerShell 中执行:

code .
  • code:启动 VS Code。
  • .:打开当前文件夹,也就是 demo1。

如果提示找不到 code,手动打开 VS Code,然后选择:

→ 文件
→ 打开文件夹
→ E:\libraries\graphmap\demo1

打开任意一个.py文件,观察工程右下角是否使用当前虚拟环境的python。

在这里插入图片描述

否则,在确保下载并启用python扩展后,

在 VS Code 中按:Ctrl + Shift + P

搜索:Python: Select Interpreter

选择:Python 解释器

选择:E:\libraries\graphmap\demo1\.venv\Scripts\python.exe

这一步确保 VS Code 使用当前项目的虚拟环境。

二. 创建和测试 Neo4j 数据库实例

1. 创建 Neo4j 实例

打开 Neo4j Desktop 2.2.1,点击: Create instance

填写:

实例名称:demo1
数据库版本:选择最高的 5.26.x LTS
用户名:neo4j
密码:自己设置,例如 Neo4j_demo1_12
  • 官方文档目前明确区分:2026.06 是当前功能版本,5.26 是 LTS 版本
  • 5.26 是官方长期支持版本 LTS,持续接收关键缺陷和安全修复。
  • 5.26.x 是当前的 5.26 补丁版本。
  • Neo4j Desktop 创建的 Instance 本质上是一个本地 Neo4j DBMS(数据库管理系统)。结合【八. 总结】去理解
  • Desktop 2.2 可以管理 Neo4j 5.1 及以上版本,并会管理数据库运行所需的 Java JDK,因此不需要另外安装 JDK。
  • 新实例会自动包含默认的neo4j数据库和用于系统管理的system数据库。

例如 你现在的环境

   Neo4j Desktop
	└── demo1 实例
 		└── Neo4j DBMS 5.26.19
 			├── neo4j 数据库
 			└── system 数据库 
  • Neo4j Desktop:负责创建、启动、停止和管理实例。
  • demo1:你给这个本地实例起的名字。
  • Neo4j DBMS 5.26.19:真正运行数据库的核心程序。
  • neo4j:默认用来存放节点、关系和属性的数据库。
  • system:用于管理用户、权限和数据库状态的系统数据库。

2. 启动实例

demo1实例已经创建并成功启用,右上角显示:RUNNING

当前这个紫色弹窗是在提示安装 APOC 插件。现在先不用安装 APOC。

点击紫色提示框右上角的×,关闭提示。
在这里插入图片描述

3. 在 Query 中连接实例

确保实例启用后, 打开 Query

点击左上角:No instance connected

在列表中选择 demo1 ,点击 Connect

连接成功后,左上角应变成类似:demo1, Database: neo4j, User: neo4j

Query,是用来向 Neo4j 数据库发送查询命令的图形化工具。

4. 执行 Cypher 测试语句

点击最上方带 neo4j$ 的输入框,输入:RETURN "Neo4j运行成功" AS message;

并运行,即点击输入框最右侧的蓝色三角形运行按钮

显示如下结果,说明:

在这里插入图片描述

  • Query 已连接到 neo4j 数据库
  • Cypher 查询可以正常执行
  • 数据库可以返回结果

在 Query 中输入的语言叫:Cypher,是 Neo4j 用于操作图数据库的查询语言。

三. 创建项目文件和配置文件

1. 创建项目文件结构

查看 VS Code 左侧文件区域,当前存在文件:

DEMO1
├── .venv
	├── include
	├── Lib
	├── Scripts
	└── pyvenv.cfg

创建以下文件:

demo1
├── .venv               文件夹
├── data                文件夹
│   └── triples.csv     文件
├── .env                文件
├── .gitignore          文件
├── test_connection.py  文件
└── import_kg.py        文件
  • data\triples.csv : 保存知识图谱三元组
  • .env : 保存 Neo4j 的连接地址、用户名和密码
  • .gitignore:告诉 Git 不要上传虚拟环境、密码和 Python 缓存
  • test_connection.py : 测试 Python 是否能连接Neo4j
  • import_kg.py : 读取 CSV 三元组并导入 Neo4j

2. 配置 .env

.env 文件写入:

NEO4J_URI=neo4j://localhost:7687
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=Neo4j_demo1_12
NEO4J_DATABASE=neo4j

注意把:
Neo4j_demo1_12 替换成你在 Desktop 中设置的真实密码。

  • NEO4J_URI : Neo4j 的连接地址,7687 是 Bolt 连接端口
  • NEO4J_USERNAME :数据库用户名,本地实例默认一般为 neo4j
  • NEO4J_PASSWORD : 创建实例时设置的密码。
  • NEO4J_DATABASE :需要操作的数据库,默认数据库名通常是 neo4j

3. 配置 .gitignore

.gitignore 文件写入:

.venv/
.env
__pycache__/
*.pyc
  • .venv/:以后使用 Git 时不上传虚拟环境。
  • .env:不上传数据库密码。
  • __pycache__/:不上传 Python 缓存。
  • *.pyc:不上传 Python 编译缓存文件。

四. 测试 Python 连接 Neo4j

1. 编写 test_connection.py

test_connection.py 写入:

import os
from pathlib import Path

from dotenv import load_dotenv
from neo4j import GraphDatabase


# 当前项目根目录
PROJECT_DIR = Path(__file__).resolve().parent

# 加载项目目录中的 .env 文件
load_dotenv(PROJECT_DIR / ".env")

# 从 .env 中读取数据库配置
uri = os.environ["NEO4J_URI"]
username = os.environ["NEO4J_USERNAME"]
password = os.environ["NEO4J_PASSWORD"]


def main():
    # 创建 Neo4j 驱动
    with GraphDatabase.driver(
        uri,
        auth=(username, password),
    ) as driver:
        # 立即检查数据库地址和账号密码是否正确
        driver.verify_connectivity()

    print("Neo4j连接成功")


if __name__ == "__main__":
    main()

2. 运行连接测试

先确保 Neo4j Desktop 中的实例已经启动。

在 PowerShell 中执行:

Set-Location "E:\libraries\graphmap\demo1"
.\.venv\Scripts\Activate.ps1

运行程序:

python .\test_connection.py

正常输出:Neo4j连接成功

如果提示:AuthenticationError

通常是用户名或密码错误,检查 .env。

如果提示:ServiceUnavailable

通常是 Neo4j Desktop 中的实例没有启动,或者连接地址错误。

五. 导入知识图谱三元组

1. 编写三元组 CSV 文件

data\triples.csv 文件写入:

head,head_type,relation,tail,tail_type
无人机,设备,使用,PX4,软件
无人机,设备,搭载,相机,传感器
无人机,设备,搭载,飞控,设备
PX4,软件,运行于,飞控,设备
相机,传感器,采集,图像,数据
YOLO,算法,处理,图像,数据
YOLO,算法,输出,目标检测结果,数据
目标检测结果,数据,用于,目标跟踪,任务
目标跟踪,任务,输出,目标位置,数据
MAVROS,软件,连接,PX4,软件
ROS,软件,包含,MAVROS,软件

第一行是字段名

  • head :头实体
  • head_type :头实体的类别
  • relation :两个实体之间的关系
  • tail :尾实体
  • tail_type:尾实体的类别

例如:无人机,设备,使用,PX4,软件
表示:无人机 --使用--> PX4

2. 编写 import_kg.py

import_kg.py 写入:

import csv
import os
from pathlib import Path

from dotenv import load_dotenv
from neo4j import GraphDatabase


# 项目根目录
PROJECT_DIR = Path(__file__).resolve().parent

# 三元组CSV文件路径
CSV_PATH = PROJECT_DIR / "data" / "triples.csv"

# 加载数据库配置
load_dotenv(PROJECT_DIR / ".env")

URI = os.environ["NEO4J_URI"]
USERNAME = os.environ["NEO4J_USERNAME"]
PASSWORD = os.environ["NEO4J_PASSWORD"]
DATABASE = os.getenv("NEO4J_DATABASE", "neo4j")


def read_triples():
    """读取CSV中的三元组数据。"""

    if not CSV_PATH.exists():
        raise FileNotFoundError(f"找不到CSV文件:{CSV_PATH}")

    with CSV_PATH.open(
        mode="r",
        encoding="utf-8-sig",
        newline="",
    ) as file:
        reader = csv.DictReader(file)
        rows = list(reader)

    if not rows:
        raise ValueError("CSV文件中没有三元组数据")

    return rows


def import_triples(driver, rows):
    """把实体和关系批量写入Neo4j。"""

    query = """
    UNWIND $rows AS row

    MERGE (head:Entity {name: row.head})
    SET head.type = row.head_type

    MERGE (tail:Entity {name: row.tail})
    SET tail.type = row.tail_type

    MERGE (head)-[
        relation:RELATION {name: row.relation}
    ]->(tail)
    """

    with driver.session(database=DATABASE) as session:
        session.run(query, rows=rows).consume()


def main():
    rows = read_triples()

    with GraphDatabase.driver(
        URI,
        auth=(USERNAME, PASSWORD),
    ) as driver:
        driver.verify_connectivity()
        import_triples(driver, rows)

    print(f"导入完成,共导入 {len(rows)} 条三元组")


if __name__ == "__main__":
    main()

3. 运行导入程序

先确保 Neo4j Desktop 实例正在运行。

在PowerShell中执行:

Set-Location "E:\libraries\graphmap\demo1"
.\.venv\Scripts\Activate.ps1
python .\import_kg.py

正常输出:导入完成,共导入 11 条三元组

六. 在 Neo4j 中查询和查看知识图谱

  1. 查看全部节点和关系

打开 Neo4j Desktop 中的 Query,在输入框 neo4j$ 里执行:

MATCH p = ()-[]->()
RETURN p;
  • MATCH:匹配数据库中的图结构。
  • p:给整条路径起名。
  • ():任意节点。
  • -[]->:任意有方向的关系。
  • RETURN p:返回完整路径并显示为关系图。
  1. 以表格形式查看所有三元组
MATCH (head:Entity)-[relation:RELATION]->(tail:Entity)
RETURN
    head.name AS 头实体,
    relation.name AS 关系,
    tail.name AS 尾实体;
  1. 查询与无人机直接相关的节点
MATCH p = (uav:Entity {name: "无人机"})-[]-(other)
RETURN p;
  1. 查询无人机两层以内的关系
MATCH p = (uav:Entity {name: "无人机"})-[*1..2]-(other)
RETURN p;
  1. 删除当前数据库全部节点与关系
MATCH (n)
DETACH DELETE n;

七. 每次重新打开项目的操作流程

  1. 启用实例,打开Query
  2. 打开 PowerShell,执行:
Set-Location "E:\libraries\graphmap\demo1"
.\.venv\Scripts\Activate.ps1
code .
python .\test_connection.py
python .\import_kg.py
  1. 退出虚拟环境
deactivate
  • 退出当前项目的 Python 虚拟环境。
  • 不会删除 .venv,下次仍然可以继续激活。

八. 修改文件

各文件是否需要修改 :

文件 一般是否修改 需要修改的情况
data\triples.csv 需要 更换知识图谱内容
.env 可能需要 更换地址、用户名、密码或数据库名称
.gitignore 通常不需要 需要增加新的忽略文件
test_connection.py 通常不需要 .env 中连接配置项的名称发生变化,或程序不再从 .env 读取配置
import_kg.py 可能需要 CSV字段、节点标签和关系类型发生变化

​其中:

  1. CSV 字段发生变化
    head,head_type,relation,tail,tail_type
    改成
    head,head_type,relation,tail,tail_type,source,confidence

  2. 改成具体节点标签
    (:Entity {type: "设备"})
    改成:
    (:Device)

  3. 改成具体关系类型
    [:RELATION {name: "使用"}]
    改成:
    [:USES]

注意旧数据

如果你直接修改 CSV,再次运行:python .\import_kg.py

新数据会导入当前数据库,但旧数据不会自动删除

结果可能变成:

原无人机知识图谱
+
新学校知识图谱
三种处理方法
  1. 每个项目创建一个独立 Neo4j 实例
  2. 清空当前数据库后重新导入

Neo4j Query 中执行:

MATCH (n)
DETACH DELETE n;

运行python .\import_kg.py

注意:该命令会删除当前数据库中的全部节点和关系。

  1. 在同一个实例中使用不同数据库

修改 .env

NEO4J_DATABASE=schoolkg

前提是当前 Neo4j 版本和授权支持创建多个用户数据库。

总结:

  1. 在 demo1 实例下,通过 .env 指定把哪个 CSV 导入哪个数据库。
  2. Neo4j 的一个实例可以管理多个数据库,且相互独立。

实战可参考 Neo4j知识图谱进阶练习:修改CSV结构、关系属性与导入程序

更多推荐