This repository holds the official Python API for Nebula Graph.
Before you start, please read this section to choose the right branch for you. The compatibility between the API and Nebula Graph service can be found in How to choose nebula-python. The current master branch is compatible with Nebula Graph 3.0.
|--nebula-python
|
|-- nebula3 // client code
| |-- fbthrift // the fbthrift lib code
| |-- common | |-- data | |-- graph | |-- meta | |-- net // the net code for graph client
| |-- storage | |-- Config.py // the pool config
| |__ Exception.py // the define exception
| |-- examples
| |-- GraphClientMultiThreadExample.py // the multi thread example
| |-- GraphClientSimpleExample.py // the simple example
| |__ ScanVertexEdgeExample.py |
|-- tests // the test code
| |-- setup.py // used to install or package
| |__ README.md // the introduction of nebula3-python
# for v3.xpipinstallnebula3-python==$version# for v2.xpipinstallnebula2-python==$version- Clone from GitHub
git clone https://github.com/vesoft-inc/nebula-python.git
cd nebula-python- Install
pipinstall .fromnebula3.gclient.netimportConnectionPoolfromnebula3.ConfigimportConfig# define a configconfig=Config()
config.max_connection_pool_size=10# init connection poolconnection_pool=ConnectionPool()
# if the given servers are ok, return true, else return falseok=connection_pool.init([('127.0.0.1', 9669)], config)
# option 1 control the connection release yourself# get session from the poolsession=connection_pool.get_session('root', 'nebula')
# select spacesession.execute('USE nba')
# show tagsresult=session.execute('SHOW TAGS')
print(result)
# release sessionsession.release()
# option 2 with session_context, session will be released automaticallywithconnection_pool.session_context('root', 'nebula') assession:
session.execute('USE nba')
result=session.execute('SHOW TAGS')
print(result)
# close the poolconnection_pool.close()You should make sure the scan client can connect to the address of storage which see from SHOW HOSTS
fromnebula3.mclientimportMetaCache, HostAddrfromnebula3.sclient.GraphStorageClientimportGraphStorageClient# the metad servers's addressmeta_cache=MetaCache([('172.28.1.1', 9559),
('172.28.1.2', 9559),
('172.28.1.3', 9559)],
50000)
# option 1 metad usually discover the storage address automaticallygraph_storage_client=GraphStorageClient(meta_cache)
# option 2 manually specify the storage addressstorage_addrs= [HostAddr(host='172.28.1.4', port=9779),
HostAddr(host='172.28.1.5', port=9779),
HostAddr(host='172.28.1.6', port=9779)]
graph_storage_client=GraphStorageClient(meta_cache, storage_addrs)
resp=graph_storage_client.scan_vertex(
space_name='ScanSpace',
tag_name='person')
whileresp.has_next():
result=resp.next()
forvertex_datainresult:
print(vertex_data)
resp=graph_storage_client.scan_edge(
space_name='ScanSpace',
edge_name='friend')
whileresp.has_next():
result=resp.next()
foredge_datainresult:
print(edge_data)| Nebula-Python Version | NebulaGraph Version |
|---|---|
| 1.0 | 1.x |
| 2.0.0 | 2.0.0/2.0.1 |
| 2.5.0 | 2.5.0 |
| 2.6.0 | 2.6.0/2.6.1 |
| 3.0.0 | 3.0.0 |
| master | master |
Fork this repo, then clone it locally
(be sure to replace the {username} in the repo URL below with your GitHub username):
git clone https://github.com/{username}/nebula-python.git
cd nebula-python
Install the package in the editable mode, then install all the dev dependencies:
pip install -e .
pip install -r requirements/dev.txt
Make sure the Nebula server in running, then run the tests with pytest:
pytest
Using the default formatter with black.
Please run make fmt to format python code before submitting.
See How to contribute for the general process of contributing to Nebula projects.