跳至主要内容

NebulaGraph的Jupyter扩展

项目描述

for NebulaGraph Jupyter Docker Image Docker Extension GitHub release (latest by date) pypi-version Open In Colab Documentation

https://github.com/wey-gu/jupyter_nebulagraph/assets/1651790/10135264-77b5-4d3c-b68f-c5810257feeb

jupyter_nebulagraph,原名ipython-ngql,是一个Python包,简化了从Jupyter Notebooks或iPython环境连接到NebulaGraph的过程。它通过简化Jupyter Notebooks的创建、调试和共享来提升用户体验。使用jupyter_nebulagraph,用户可以轻松连接到NebulaGraph,加载数据,执行查询,可视化结果,并微调查询输出,从而提高协作效率和生产力。

入门指南

pip install jupyter_nebulagraph

在Jupyter Notebook或iPython中加载扩展

%load_ext ngql
%ngql --address 127.0.0.1 --port 9669 --user root --password nebula

执行查询

%ngql USE basketballplayer;
%ngql MATCH p=(v:player)-->(v2:player) WHERE id(v) == "player100" RETURN p;

绘制图形

%ng_draw

通过在Google Colab上实验jupyter_nebulagraph的功能来发现其功能。您还可以在此文档中访问类似的Jupyter Notebook。

有关详细指南,请参阅官方文档

功能 快捷参考卡 示例 命令文档
连接 %ngql --address 127.0.0.1 --port 9669 --user user --password password 连接 %ngql
从CSV加载数据 使用 %ng_load --source actor.csv --tag player --vid 0 --props 1:name,2:age --space basketballplayer 加载数据 加载数据 %ng_load
查询执行 %ngql MATCH p=(v:player{name:"Tim Duncan"})-->(v2:player) RETURN p; 查询执行 %ngql%%ngql(多行)
结果可视化 %ng_draw 绘制图形 %ng_draw
绘制模式 %ng_draw_schema 绘制模式 %ng_draw_schema
调整查询结果 df = _ 获取最后查询结果作为 pd.dataframeResultSet 调整结果 配置 ngql_result_style
点击查看更多!

安装

jupyter_nebulagraph 可以通过 pip 安装或从本 git 仓库本身安装。

通过 pip 安装

pip install jupyter_nebulagraph

在仓库内安装

git clone git@github.com:wey-gu/jupyter_nebulagraph.git
cd jupyter_nebulagraph
python setup.py install

在 Jupyter Notebook 或 iPython 中加载

%load_ext ngql

连接到 NebulaGraph

连接 NebulaGraph 数据库实例需要以下参数

参数 描述
--address-addr NebulaGraph 实例的 IP 地址
--port-P NebulaGraph 实例的端口号
--user-u 用户名
--password-p 密码

以下是一个连接到 127.0.0.1:9669,用户名为 "user",密码为 "password" 的示例。

%ngql --address 127.0.0.1 --port 9669 --user user --password password

执行查询

现在支持两种 iPtython 魔法

选项 1:使用 %ngql 的一行样式

%ngql USE basketballplayer;
%ngql MATCH (v:player{name:"Tim Duncan"})-->(v2:player) RETURN v2.player.name AS Name;

选项 2:使用 %%ngql 的多行样式

%%ngql
SHOW TAGS;
SHOW HOSTS;

带有变量的查询字符串

jupyter_nebulagraph 支持通过 Jinja2 模板框架从本地命名空间获取变量,它支持如下示例中的查询。

实际的查询字符串应该是 GO FROM "Sue" OVER owns_pokemon ...,并且通过消耗本地变量 trainer"{{ trainer }}" 渲染为 "Sue"

In [8]: vid = "player100"

In [9]: %%ngql
   ...: MATCH (v)<-[e:follow]- (v2)-[e2:serve]->(v3)
   ...:   WHERE id(v) == "{{ vid }}"
   ...: RETURN v2.player.name AS FriendOf, v3.team.name AS Team LIMIT 3;
Out[9]:   RETURN v2.player.name AS FriendOf, v3.team.name AS Team LIMIT 3;
FriendOf	Team
0	LaMarcus Aldridge	Trail Blazers
1	LaMarcus Aldridge	Spurs
2	Marco Belinelli	Warriors

绘制查询结果

绘制最后查询

在带有图形数据的查询后调用 %ng_draw

# one query
%ngql GET SUBGRAPH 2 STEPS FROM "player101" YIELD VERTICES AS nodes, EDGES AS relationships;
%ng_draw

# another query
%ngql match p=(:player)-[]->() return p LIMIT 5
%ng_draw

绘制查询

或者使用 %ng_draw <one_line_query>%%ng_draw <multiline_query> 来代替绘制最后查询的结果。

ng_draw_demo_1

一行查询

%ng_draw GET SUBGRAPH 2 STEPS FROM "player101" YIELD VERTICES AS nodes, EDGES AS relationships;

多行查询

%%ng_draw
MATCH path_0=(n)--() WHERE id(n) == "p_0"
OPTIONAL MATCH path_1=(n)--()--()
RETURN path_0, path_1

绘制图形模式

%ng_draw_schema

从CSV加载数据

使用 ng_load_csv 魔法,可以在 NebulaGraph 中加载数据。

例如,将 actor.csv 文件中的数据加载到名为 basketballplayer 的空间中,标签为 player,vid 在列 0,属性在列 12

"player999","Tom Hanks",30
"player1000","Tom Cruise",40
"player1001","Jimmy X",33

只需运行以下行

%ng_load --source actor.csv --tag player --vid 0 --props 1:name,2:age --space basketballplayer

其他示例

# load CSV from a URL
%ng_load --source https://github.com/wey-gu/jupyter_nebulagraph/raw/main/examples/actor.csv --tag player --vid 0 --props 1:name,2:age --space demo_basketballplayer
# with rank column
%ng_load --source follow_with_rank.csv --edge follow --src 0 --dst 1 --props 2:degree --rank 3 --space basketballplayer
# without rank column
%ng_load --source follow.csv --edge follow --src 0 --dst 1 --props 2:degree --space basketballplayer

调整查询结果

默认情况下,查询结果是一个 Pandas Dataframe,我们可以通过从变量 _ 读取来访问它。

In [1]: %ngql MATCH (v:player{name:"Tim Duncan"})-->(v2:player) RETURN v2.player.name AS Name;

In [2]: df = _

还可以配置将结果放在原始 ResultSet 中,以启用方便的 NebulaGraph Python 应用程序开发。

更多请参阅 文档:结果处理

速查表

如果您发现自己忘记了命令或不想完全依赖速查表,请记住这一点:通过帮助命令寻求帮助!

%ngql help

致谢 ♥️

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

ipython_ngql-0.14.3.tar.gz (18.1 kB 查看哈希值)

上传时间 源代码

构建分发

ipython_ngql-0.14.3-py3-none-any.whl (19.4 kB 查看哈希值)

上传时间 Python 3

支持者