Database

Database classes provide persistence for Viper documents using SQLite or remote connections.

When to use: Use Database for simple key-value persistence without history tracking. For versioned data, see Commit System.

Quick Start

from dsviper import Database, DSMBuilder

# Create or open database
db = Database.create("data.vdb")

# Load definitions from DSM
builder = DSMBuilder.assemble("model.dsm")
report, dsm_defs, defs = builder.parse()
db.extend_definitions(defs)

# Write (requires transaction)
db.begin_transaction()
db.set(attachment, key, document)
db.commit()

# Read
result = db.get(attachment, key)
if not result.is_nil():
    doc = result.unwrap()

# Delete
db.begin_transaction()
db.delete(attachment, key)
db.commit()

See also

For detailed examples with concrete attachments, see Database.

Choosing the Right Class

Use Case

Class

Note

Simple CRUD, no history

Database

Creates .vdb files

Need version history

CommitDatabase

See Commit System

Remote database access

DatabaseRemote

Client-server mode

Core Classes

dsviper.Database

A Database is a CRUD like transactional database.

dsviper.DatabaseSQLite

A low-level class used to represent a CRUD like database based on SQLite3 through the Databasing interface.

dsviper.DatabaseRemote

A low-level class used to access a CRUD like database from a remote repository through the Databasing interface.

dsviper.Databasing

An interface used to abstract the implementation of the persistence layer for a CRUD like database.

Low-Level

dsviper.SQLite

A class used to retreive the configuration of SQLite3.