Skip to main content

ArangoDB Graph Database Backend for Django

Project description

djarango

ArangoDB Backend Interface for Django

Installation

$ pip install djarango
$ # check install status
$ djarango status

Configure settings.py (example)

DATABASES_ARANGO = {
    'default': {
        'ENGINE'       : 'django.db.backends.arangodb',# Backend implementation
        'NAME'         : 'graphdb',                 # DB name
        'HOST'         : 'localhost',               # Single-mode host; 'localhost' is default.
        'PORT'         : '8529',                    # Port 8529 is the default; optional.
        'USER'         : 'someuser',
        'PASSWORD'     : 'somepassword',
        'TIME_ZONE'    : 'UTC',
#       'USE_TZ'       : True,
        'CONN_MAX_AGE' : 60,
        'AUTOCOMMIT'   : True,
        # Arango supports clustered DB
        # If "HOSTS" is provided, it will override "HOST".
#       'HOSTS'     : [ '172.28.0.1', '172.28.0.2', '172.28.0.3', '172.28.0.4', ],
#       'HOST_RESOLVER' : 'rounrobin',      # Options are 'roundrobin' | 'random'
    }
}

Add Edge Fields to a Django model (example)

from django.db.backends.arangodb.fields.edges import EdgeField

# Djarango treats every Django model as an ArangoDB collection.
class ModelA(models.Model):
    title           = models.CharField(max_length = 50)
    description     = models.CharField(max_length = 200)
    counta          = models.IntegerField(default = 0)

    # EdgeField creates an edge from ModelA to ModelB
    # ModelA and ModelB are ArangoDB nodes, by default.
    # graph_name specifies the name of the graph that will be created in
    # ArangoDB containing the model (node) collections and edges.
    modelb          = EdgeField('ModelB', graph_name='ABTest')

class ModelB(models.Model):
    title           = models.CharField(max_length = 50)
    description     = models.CharField(max_length = 200)
    countb          = models.IntegerField(default = 0)

    # The EdgeFields are unidirectional.  In order to create a bidirectional
    # edge, there must be an EdgeField in each direction.
    # Specify the same graph_name so that the edges will be in the same graph.
    # Otherwise, a graph name will be auto-generated: 'graph_modelb_modela'
    # and each edge will be in different graphs.
    modela          = EdgeField('ModelA', graph_name='ABTest')

Design Notes

Additional information about design and the edge field implementation is in fields.md

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

djarango-0.0.6.tar.gz (47.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

djarango-0.0.6-py3-none-any.whl (45.9 kB view details)

Uploaded Python 3

File details

Details for the file djarango-0.0.6.tar.gz.

File metadata

  • Download URL: djarango-0.0.6.tar.gz
  • Upload date:
  • Size: 47.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.5

File hashes

Hashes for djarango-0.0.6.tar.gz
Algorithm Hash digest
SHA256 84cd17bd8808a68f26d999854f2a4767558b5ad10733bc15ec08c5b24732bbec
MD5 7acf097be720f298bf68a0a57d088317
BLAKE2b-256 421946c4a0a4dea725014f65522b718ff5cb8e7276b3d217ea6bc07e5fa468b6

See more details on using hashes here.

File details

Details for the file djarango-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: djarango-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 45.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.5

File hashes

Hashes for djarango-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 0d0e4a7a434bb4b30a70de7e4af3f076d75443bd523430b514a92dd044835252
MD5 7cd864117a13452fc54020fadf871cbb
BLAKE2b-256 3093516322c3de57e9e2db3cd34a087c758548d2681216e4287690181b5ba54b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page