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!