Nebula Python

Nebula Python是一款Python语言的客户端,可以连接、管理Nebula Graph图数据库。

前提条件

已安装Python,版本为3.5及以上。

版本对照表

Nebula Graph版本Nebula Python版本
2.5.02.5.0
2.0.12.0.0
2.0.02.0.0
2.0.0-rc12.0.0rc1

安装Nebula Python

pip安装

  1. $ pip install nebula2-python==<version>

克隆源码安装

  1. 克隆Nebula Python源码到机器。

    • (推荐)如果需要安装指定版本的Nebula Python,请使用选项--branch指定分支。例如安装v2.5.0发布版本,请执行如下命令:

      1. $ git clone --branch v2.5.0 https://github.com/vesoft-inc/nebula-python.git
    • 如果需要安装日常开发版本,请执行如下命令下载master分支的源码:

      1. $ git clone https://github.com/vesoft-inc/nebula-python.git
  2. 进入目录nebula-python。

    1. $ cd nebula-python
  3. 执行如下命令安装依赖。

    1. $ pip install -r requirements.txt
  4. 执行如下命令安装。

    1. $ sudo python3 setup.py install

核心代码

详细示例请参见Example

连接Graph服务

  1. # 定义配置
  2. config = Config()
  3. config.max_connection_pool_size = 10
  4. # 初始化连接池
  5. connection_pool = ConnectionPool()
  6. # 如果给定的服务器正常,则返回true,否则返回false。
  7. ok = connection_pool.init([('192.168.xx.1', 9669)], config)
  8. # 方法1:控制连接自行释放。
  9. # 从连接池中获取会话
  10. session = connection_pool.get_session('root', 'nebula')
  11. # 选择图空间
  12. session.execute('USE basketballplayer')
  13. # 执行查看TAG命令
  14. result = session.execute('SHOW TAGS')
  15. print(result)
  16. # 释放会话
  17. session.release()
  18. # 方法2:使用session_context,会话将被自动释放。
  19. with connection_pool.session_context('root', 'nebula') as session:
  20. session.execute('USE basketballplayer;')
  21. result = session.execute('SHOW TAGS;')
  22. print(result)
  23. # 关闭连接池
  24. connection_pool.close()

连接Storage服务

  1. # 设置所有Meta服务地址
  2. meta_cache = MetaCache([('192.168.xx.1', 9559),
  3. ('192.168.xx.2', 9559),
  4. ('192.168.xx.3', 9559)],
  5. 50000)
  6. graph_storage_client = GraphStorageClient(meta_cache)
  7. resp = graph_storage_client.scan_vertex(
  8. space_name='ScanSpace',
  9. tag_name='person')
  10. while resp.has_next():
  11. result = resp.next()
  12. for vertex_data in result:
  13. print(vertex_data)
  14. resp = graph_storage_client.scan_edge(
  15. space_name='ScanSpace',
  16. edge_name='friend')
  17. while resp.has_next():
  18. result = resp.next()
  19. for edge_data in result:
  20. print(edge_data)