Skip to main content

DockieDb is a simple in-memory document database.

Project description

DockieDb

A simple in-memory document database.

Installation

Install using pip install tq-dockie-db.

Document Database Primer

Looking at the tests in the test folder will give you a good idea on how to use DockieDb. Nevertheless, this section offers some guidance.

In general, document database objects have the following hierarchy:

Database ---> Container (1 or more) --->Document (1 or more)

At the root, there is a Database. A database consists of one or more Containers. A Container holds one or more Documents.

If you're coming from a relational background then you can think of the Database as the schema, a Container as the table, and a Document as a row in the table.

Whereas the rows in the table conform to the same schema, Documents in a Container are schemaless. In other words you can store Documents of different shapes in the same container.

This tutorial is a great read for those new to document databases. It does a better job explaining it than I ever could in this readme.

Creating Database Objects

Create a Database

from dockie.core.database import Database

db = Database()

Create a Container

container = db.add_container("items")

Add a Document to the Container

from dockie.core.document import Document

document = Document("item1", {"name": "basketball", "price": 29.99})
container.add_document(document)

A document id must be a string or integer.

Retrieving Documents

There are two ways to retrieve a document:

  • By its id.
  • By querying against one or more non-id attributes.

Retrieving a Document by ID

from dockie.query.query import DocumentIdQuery

query = DocumentIdQuery()
document = query.execute(container, document_id="item1")

Retrieving a Document by a Non-ID Attribute

Querying by non-ID attributes is accomplished with the dictquery library.

from dockie.query.query import DocumentAttributeQuery

query = DocumentAttributeQuery()
document = query.execute(container, query='name=="basketball"')

Refer to the tests in this repository for more query examples. Refer to the dictquery homepage for details on dictquery syntax.

Persisting the Database

Although DockieDb is an in-memory database, it can be saved and loaded to/from a file.

Save the Database to File

from dockie.core.persistence import persist_to_file

persist_to_file(db, "db.bak")

Load the Database from File

from dockie.core.persistence import load_from_file

db = load_from_file("db.bak)

Miscellania

Running Tests

From the project root folder, run pytest without any arguments.

Project details


Release history Release notifications | RSS feed

This version

1.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

tq_dockie_db-1.0-py3-none-any.whl (3.6 kB view details)

Uploaded Python 3

File details

Details for the file tq_dockie_db-1.0-py3-none-any.whl.

File metadata

  • Download URL: tq_dockie_db-1.0-py3-none-any.whl
  • Upload date:
  • Size: 3.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.9

File hashes

Hashes for tq_dockie_db-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c9c7b987a99f9ac48f7928371a3b67b8da9cc71f50101702dac6aa3fcc804bad
MD5 015a7f4b0bcde645dfe24b53d91bb87d
BLAKE2b-256 b3ef95e21c793f8d35061af46fe5e394752e7eb26f756987946d5c89ebc596e2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page