Skip to main content

Dynamore is extremely simple Python library for managing entities on DynamoDb.

Project description

DYNAMORE

Dynamore is extremely simple Python library for managing entities on DynamoDb. It’s designed to be used together with REST API and only supports single table design.

Installation

Install from Pypi:

$ pip install dynamore

Quick start

Dynamore doesn’t manage your tables so create DynamoDb table beforehand e.g. provisioning by CloudFormation.

Here’s the simple example on how to create Person schema and store it to DynamoDb:

from dynamore.dynamodb_proxy import DynamoDbProxy
from dynamore.entity import Entity


class Person(Entity):
    SCHEMA = {
        "title": "PERSON",
        "type": "object",
        "required": ["name", "age", "gender", "id_number"],
        "properties": {
            "name": {"type": "string"},
            "age": {"type": "integer", "min": 0, "max": 123},
            "gender": {"type": "string", "enum": ["male", "female"]},
            "id_number": {"type": "string"},
        },
        "additionalProperties": False,
    }

    ID_ATTRIBUTE = "id_number"

db = DynamoDbProxy(table_name="MyTable")
data = {
    "name": "Jeanne",
    "age": 123,
    "gender": "female",
    "id_number": "123456"
}
_ = db.post(entity_class=Person, data=data)
# Get single item
item = db.get(
    entity_class=Person, data={"id_number": data["id_number"]}
)
# Get all items of type "Person"
items = dynamodb_proxy.get(entity_class=Person)

First a new entity class Person defined. It’s schema is defined using jsonschema and id attribute defines the name of the attribute that is used for uniqueness.

Dynamore stores data to DynamoDb in the following format:

PK

SK

name

age

gender

PERSON

123456

Jeanne

123

female

By default entity uses partition key “PK” and sort key “SK” value but you can define them otherwise by overriding pr_keys-method.

Project details


Download files

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

Source Distribution

dynamore-0.1.1.tar.gz (5.8 kB view hashes)

Uploaded Source

Built Distribution

dynamore-0.1.1-py3-none-any.whl (6.3 kB view hashes)

Uploaded Python 3

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