API Documentation

Database Client

class snakesist.exist_client.ExistClient(host: str = 'localhost', port: int = 8080, user: str = 'admin', password: str = '', prefix: str = 'exist', parser: lxml.etree.XMLParser = <lxml.etree.XMLParser object>)

Bases: object

An eXist-db client object representing a database instance. The client can be used for CRUD operations. Resources can be queried using an XPath expression. Queried resources are identified by the absolute resource ID and, if the resource is part of a document, the node ID.

Parameters:
  • host – hostname
  • port – port used to connect to the configured eXist instance
  • user – username
  • password – password
  • prefix – configured path prefix for the eXist instance
  • parser – an lxml etree.XMLParser instance to parse query results
base_url

The base URL pointing to the eXist instance.

create_resource(document_path: str, node: str)

Write a new document node to the database.

Parameters:
  • document_path – Path to collection where document will be stored, relative to the configured root collection
  • node – XML string
delete_document(document_path: str) → None

Remove a document from a database.

Parameters:document_path – The path pointing to the document (relative to the REST endpoint, e. g. ‘/db/foo/bar’)
delete_node(abs_resource_id: str, node_id: str = '') → None

Remove a node from the database.

Parameters:
  • abs_resource_id – The absolute resource ID pointing to the document.
  • node_id – The node ID locating a node inside a document (optional).
query(query_expression: str) → delb.Document

Make a database query using XQuery

Parameters:query_expression – XQuery expression
Returns:The query result as a delb.Document object.
retrieve_resource(abs_resource_id: str, node_id: str = '') → snakesist.exist_client.Resource

Retrieve a single resource by its internal database IDs.

Parameters:
  • abs_resource_id – The absolute resource ID pointing to the document.
  • node_id – The node ID locating a node inside a document (optional).
Returns:

The queried node as a Resource object.

retrieve_resources(xpath: str) → List[snakesist.exist_client.Resource]

Retrieve a set of resources from the database using an XPath expression.

Parameters:xpath – XPath expression (whatever version your eXist instance supports via its RESTful API)
Returns:The query results as a list of Resource objects.
root_collection

The configured root collection for database queries.

root_collection_url

The URL pointing to the configured root collection.

update_document(data: str, document_path: str) → None

Replace a document root node with an updated version.

Parameters:
  • data – A well-formed XML string containing the node to replace the old one with.
  • document_path – The path pointing to the document (relative to the REST endpoint, e. g. ‘/db/foo/bar’)
update_node(data: str, abs_resource_id: str, node_id: str) → None

Replace a sub-document node with an updated version.

Parameters:
  • data – A well-formed XML string containing the node to replace the old one with.
  • abs_resource_id – The absolute resource ID pointing to the document containing the node.
  • node_id – The node ID locating the node inside the containing document.

Resources

class snakesist.exist_client.Resource(exist_client: snakesist.exist_client.ExistClient, query_result: Optional[snakesist.exist_client.QueryResultItem] = None)

Bases: abc.ABC

A representation of an eXist resource (documents, nodes etc.). Each Resource object must be coupled to an ExistClient.

Resources are identified by IDs: Some resources (documents) just have an absolute resource ID, while others (nodes) require an additional node ID.

abs_resource_id

The absolute resource ID pointing to a document in the database.

delete()

Remove the node from the database.

document_path

The resource path pointing to the document.

node_id

The node ID locating the node relative to the containing document.

update_pull()

Retrieve the current node state from the database and update the object.

update_push()

Write the resource object to the database.