nosqlapi graph

In this package we find abstract classes and ODM classes concerning the graph database types.

client module

The client module contains the specific classes for graph databases and they are based on the core classes.

Client module for graph NOSQL database.

class nosqlapi.graphdb.client.GraphBatch(batch, session=None)[source]

Bases: nosqlapi.common.core.Batch, abc.ABC

Batch NOSQL database Session class

class nosqlapi.graphdb.client.GraphConnection(*args, **kwargs)[source]

Bases: nosqlapi.common.core.Connection, abc.ABC

Graph NOSQL database Connection class

__init__(*args, **kwargs)[source]

Instantiate Connection object

Parameters
  • host – Name of host that contains database

  • user – Username for connect to the host

  • password – Password for connect to the host

  • database – Name of database

  • port – Tcp port

  • bind_address – Hostname or an IP address for multiple network interfaces

  • read_timeout – Timeout for reading from the connection in seconds

  • write_timeout – Timeout for writing from the connection in seconds

  • ssl – Ssl connection established

  • ssl_ca – Ssl CA file specified

  • ssl_cert – Ssl certificate file specified

  • tls – Tls connection established

  • ssl_key – Ssl private key file specified

  • ssl_verify_cert – Verify certificate file

  • max_allowed_packet – Max size of packet sent to server in bytes

class nosqlapi.graphdb.client.GraphResponse(data, code=None, header=None, error=None)[source]

Bases: nosqlapi.common.core.Response, abc.ABC

Response NOSQL database Session class

__weakref__

list of weak references to the object (if defined)

class nosqlapi.graphdb.client.GraphSelector(*args, **kwargs)[source]

Bases: nosqlapi.common.core.Selector, abc.ABC

Graph NOSQL database Selector class

__init__(*args, **kwargs)[source]

Instantiate Selector object

Parameters
  • selector – Selector part of the query string

  • fields – Return fields

  • partition – Partition or collection of data

  • condition – Condition of query

  • order – Order by specific selector

  • limit – Limit result

class nosqlapi.graphdb.client.GraphSession(connection, database=None)[source]

Bases: nosqlapi.common.core.Session, abc.ABC

Graph NOSQL database Session class

abstract detach(*args, **kwargs)[source]

Detach node

Returns

Response

Link node to another

Returns

Response

client example

This is an example of a library for connecting to a neo4j server.

# mygraphdb.py
import nosqlapi

# this module is my library of NOSQL graph database, like Neo4J database

class Connection(nosqlapi.graphdb.GraphConnection):
    def __init__(host='localhost', port=7474, database=None, username=None, password=None, ssl=None, tls=None,
                 cert=None, ca_cert=None, ca_bundle=None): ...
    def close(self): ...
    def connect(self, *args, **kwargs): ...
    def create_database(self, database): ...
    def has_database(self, database): ...
    def databases(self): ...
    def delete_database(self): ...
    def show_database(self, database): ...


class Session(nosqlapi.graphdb.GraphSession):
    # define here all methods
    pass

conn = Connection('myneo.local', 'mydb', username='admin', password='pa$$w0rd')
print(conn.show_database('mydb'))       # {"name": "mydb", "address": "myneo.local:7474", "role": "standalone", "requestedStatus": "online", "currentStatus": "online", "error": "", "default": False}
sess = conn.connect()                   # Session object
...

odm module

The odm module contains the specific object for graph databases.

ODM module for graph NOSQL database.

class nosqlapi.graphdb.odm.Database(name, address=None, role=None, status='online', default=False)[source]

Bases: nosqlapi.kvdb.odm.Keyspace

Represents database

__init__(name, address=None, role=None, status='online', default=False)[source]

Database object

Parameters
  • name – Name of database

  • address – Address of database server

  • role – Role of database

  • status – Status of database (default online)

  • default – Default value or function

property online

Status of database

class nosqlapi.graphdb.odm.Index(name, node, properties, options)

Bases: tuple

__getnewargs__()

Return self as a plain tuple. Used by copy and pickle.

static __new__(_cls, name, node, properties, options=None)

Create new instance of Index(name, node, properties, options)

__repr__()

Return a nicely formatted representation string

property name

Alias for field number 0

property node

Alias for field number 1

property options

Alias for field number 3

property properties

Alias for field number 2

class nosqlapi.graphdb.odm.Label[source]

Bases: nosqlapi.common.odm.Text

Label of node

class nosqlapi.graphdb.odm.Node(labels, properties=None, var='')[source]

Bases: object

Represents node

__init__(labels, properties=None, var='')[source]

Node object

Parameters
  • labels – Label of node

  • properties – Properties of Node

  • var – Name variable

__repr__()[source]

Return repr(self).

__str__()[source]

Return str(self).

__weakref__

list of weak references to the object (if defined)

add_label(label)[source]

Add label to node

Parameters

label – Label string or object

Returns

None

delete_label(index=- 1)[source]

Delete label

Parameters

index – Number of index

Returns

None

class nosqlapi.graphdb.odm.Property[source]

Bases: dict

Property of node

__repr__()[source]

Return repr(self).

__weakref__

list of weak references to the object (if defined)

class nosqlapi.graphdb.odm.Relationship(labels, properties=None, var='')[source]

Bases: nosqlapi.graphdb.odm.Node

Represents relationship among nodes

__repr__()[source]

Return repr(self).

__str__()[source]

Return str(self).

class nosqlapi.graphdb.odm.RelationshipType[source]

Bases: nosqlapi.graphdb.odm.Label

Type of relationship like a label

nosqlapi.graphdb.odm.node(func)[source]

Decorator function to transform dictionary object to Node object

Parameters

func – function to decorate

Returns

Node object

nosqlapi.graphdb.odm.prop(func)[source]

Decorator function to transform dictionary object to Property object

Parameters

func – function to decorate

Returns

Property object

odm example

These objects represent the respective graph in databases.

import nosqlapi
import mygraphdb

# Create database
db = nosqlapi.graphdb.odm.Database('test')
# Create nodes
node1 = nosqlapi.graphdb.Node(var='n1', labels=[nosqlapi.graphdb.Label('Person')],
                              properties=nosqlapi.graphdb.Property({'name': 'Matteo', 'age': 35}))
node2 = nosqlapi.graphdb.Node(var='n2', labels=[nosqlapi.graphdb.Label('Person')],
                              properties=nosqlapi.graphdb.Property({'name': 'Julio', 'age': 53}))
# Add nodes to database
db.append(node1)
db.append(node2)

# Create Node object from node decorator
@nosqlapi.graphdb.node
def Person(name, age):
    return {'name': name, 'age': age}

# Create Property object from prop decorator
@nosqlapi.graphdb.prop
def user(name, age):
    return {'name': name, 'age': age}

# Create database with nodes
mydocdb.conn.create_database(db)
# Add other nodes
mydocdb.sess.insert(label='Person', properties=user('Matteo Guadrini', 36))
mydocdb.sess.insert(Person('Julio Artes', 29))          # Labels = ['Person']