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
- class nosqlapi.graphdb.client.GraphSession(connection, database=None)[source]¶
Bases:
nosqlapi.common.core.Session
,abc.ABC
Graph NOSQL database Session class
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
- __weakref__¶
list of weak references to the object (if defined)
- class nosqlapi.graphdb.odm.Property[source]¶
Bases:
dict
Property of node
- __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
- 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']