Welcome to the GitHub page for python-arango, a Python driver for ArangoDB.
- Clean, Pythonic interface
- Lightweight
- High ArangoDB REST API coverage
- Python versions 2.7.x, 3.4.x, 3.5.x and 3.6.x are supported
- Latest version of python-arango (3.x) supports ArangoDB 3.x only
- Older versions of python-arango support ArangoDB 1.x ~ 2.x only
To install a stable version from PyPi:
~$ pip install python-arango
To install the latest version directly from GitHub:
~$ pip install -e git+git@github.com:joowani/python-arango.git@master#egg=python-arango
You may need to use sudo
depending on your environment setup.
Here is a simple usage example:
from arango import ArangoClient
# Initialize the client for ArangoDB
client = ArangoClient(
protocol='http',
host='localhost',
port=8529,
username='root',
password='',
enable_logging=True
)
# Create a new database named "my_database"
db = client.create_database('my_database')
# Create a new collection named "students"
students = db.create_collection('students')
# Add a hash index to the collection
students.add_hash_index(fields=['name'], unique=True)
# Insert new documents into the collection
students.insert({'name': 'jane', 'age': 19})
students.insert({'name': 'josh', 'age': 18})
students.insert({'name': 'jake', 'age': 21})
# Execute an AQL query
result = db.aql.execute('FOR s IN students RETURN s')
print([student['name'] for student in result])
Here is another example involving graphs:
from arango import ArangoClient
client = ArangoClient()
# Create a new graph
graph = client.db('my_database').create_graph('my_graph')
students = graph.create_vertex_collection('students')
courses = graph.create_vertex_collection('courses')
takes = graph.create_edge_definition(
name='takes',
from_collections=['students'],
to_collections=['courses']
)
# Insert vertices
students.insert({'_key': '01', 'full_name': 'Anna Smith'})
students.insert({'_key': '02', 'full_name': 'Jake Clark'})
students.insert({'_key': '03', 'full_name': 'Lisa Jones'})
courses.insert({'_key': 'MAT101', 'title': 'Calculus'})
courses.insert({'_key': 'STA101', 'title': 'Statistics'})
courses.insert({'_key': 'CSC101', 'title': 'Algorithms'})
# Insert edges
takes.insert({'_from': 'students/01', '_to': 'courses/MAT101'})
takes.insert({'_from': 'students/01', '_to': 'courses/STA101'})
takes.insert({'_from': 'students/01', '_to': 'courses/CSC101'})
takes.insert({'_from': 'students/02', '_to': 'courses/MAT101'})
takes.insert({'_from': 'students/02', '_to': 'courses/STA101'})
takes.insert({'_from': 'students/03', '_to': 'courses/CSC101'})
# Traverse the graph in outbound direction, breadth-first
traversal_results = graph.traverse(
start_vertex='students/01',
strategy='bfs',
direction='outbound'
)
print(traversal_results['vertices'])
Please read the full API documentation for more details!