Skip to content

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

Notifications You must be signed in to change notification settings

villekr/dynamore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages