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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9c7b987a99f9ac48f7928371a3b67b8da9cc71f50101702dac6aa3fcc804bad |
|
MD5 | 015a7f4b0bcde645dfe24b53d91bb87d |
|
BLAKE2b-256 | b3ef95e21c793f8d35061af46fe5e394752e7eb26f756987946d5c89ebc596e2 |