arangodol#
arango with a simple (dict-like or list-like) interface
Functions
Return |
Classes
|
A basic ArangoDB persister. |
|
|
|
ArangoDbStore using tuple keys. |
- class arangodol.ArangoDbPersister(user='root', password='root', url='http://127.0.0.1:8529', db_name='py2store', collection_name='test', key_fields=('key',), key_fields_separator='::')[source]#
Bases:
KvPersisterA basic ArangoDB persister.
>>> from py2store.persisters.arangodb_w_pyarango import ArangoDbPersister >>> s = ArangoDbPersister() >>> k = {'key': '777'} # Each collection will happily accept user-defined _key values. >>> v = {'val': 'bar'} >>> for _key in s: ... del s[_key] ... >>> k in s False >>> len(s) 0 >>> s[k] = v >>> len(s) 1 >>> s[k] {'val': 'bar'} >>> s.get(k) {'val': 'bar'} >>> s.get({'not': 'a key'}, {'default': 'val'}) # testing s.get with default {'default': 'val'} >>> list(s.values()) [{'val': 'bar'}] >>> k in s # testing __contains__ again True >>> del s[k] >>> len(s) 0 >>> s = ArangoDbPersister(db_name='py2store', key_fields=('name',)) >>> for _key in s: ... del s[_key] ... >>> s[{'name': 'guido'}] = {'yob': 1956, 'proj': 'python', 'bdfl': False} >>> s[{'name': 'guido'}] {'yob': 1956, 'proj': 'python', 'bdfl': False} >>> s[{'name': 'vitalik'}] = {'yob': 1994, 'proj': 'ethereum', 'bdfl': True} >>> s[{'name': 'vitalik'}] {'yob': 1994, 'proj': 'ethereum', 'bdfl': True} >>> for key, val in s.items(): ... print(f"{key}: {val}") {'name': 'guido'}: {'yob': 1956, 'proj': 'python', 'bdfl': False} {'name': 'vitalik'}: {'yob': 1994, 'proj': 'ethereum', 'bdfl': True}
- class arangodol.ArangoDbStore(user='root', password='root', url='http://127.0.0.1:8529', db_name='py2store', collection_name='test', key_fields=('key',), key_fields_separator='::')[source]#
Bases:
Store
- class arangodol.ArangoDbTupleKeyStore(user='root', password='root', url='http://127.0.0.1:8529', db_name='py2store', collection_name='test', key_fields=('key',), key_fields_separator='::')[source]#
Bases:
ArangoDbStoreArangoDbStore using tuple keys.
>>> from py2store.stores.arangodb_store import ArangoDbTupleKeyStore >>> s = ArangoDbTupleKeyStore(collection_name='test', key_fields=('key', 'user')) >>> k = (1234, 'user') >>> v = {'name': 'bob', 'age': 42} >>> if k in s: # deleting all docs in tmp ... del s[k] >>> assert (k in s) == False # see that key is not in store (and testing __contains__) >>> orig_length = len(s) >>> s[k] = v >>> assert len(s) == orig_length + 1 >>> assert k in list(s) >>> assert s[k] == v >>> assert s.get(k) == v >>> assert v in list(s.values()) >>> assert (k in s) == True # testing __contains__ again >>> del s[k] >>> assert len(s) == orig_length
- arangodol.validate_document_key(key)[source]#
Return
keyif it is a safe ArangoDB document key, else raiseKeyError.Keys end up in request URLs, so anything outside ArangoDB’s key alphabet (such as
/) or a dot segment could address a different collection or database.>>> validate_document_key('Robot::0a1b') 'Robot::0a1b' >>> validate_document_key('a/b') Traceback (most recent call last): ... KeyError: "Invalid ArangoDB document key: 'a/b'" >>> validate_document_key('..') Traceback (most recent call last): ... KeyError: "Invalid ArangoDB document key: '..'"