Skip to content

xyder/python-arango

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

image

Travis Build Status

Documentation Status

Package Version

Python Versions

Test Coverage

Issues Open

MIT License

Welcome to the GitHub page for python-arango, a Python driver for ArangoDB.

Features

  • Clean, Pythonic interface
  • Lightweight
  • High ArangoDB REST API coverage

Compatibility

  • 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

Installation

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.

Getting Started

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!

Packages

No packages published

Languages

  • Python 99.8%
  • Shell 0.2%