Skip to main content

Python ORM style interface to Amazon (AWS) DynamoDB using Schematics or Marshmallow for Schema validation

Project description

DynamoDB + Marshmallow == Dynamallow Latest PyPI version Number of PyPI downloads

This package is a work in progress – Feedback / Suggestions / Etc welcomed!

Two awesome things, better together!

Dynamallow is a Python library that provides integration between the Boto v3 DynamoDB API and Marshmallow. Together they provide a simple, ORM inspired, interface to the DynamoDB service with a fully defined, strongly typed schema.

from dynamallow import MarshModel
from marshmallow import fields

class Book(MarshModel):
    class Table:
        name = 'prod-books'
        hash_key = 'isbn'
        read = 25
        write = 5

    class Schema:
        isbn = fields.String(validate=validate_isbn)
        title = fields.String()
        author = fields.String()
        publisher = fields.String()
        year = fields.Number()

# Store new documents directly from dictionaries
    "isbn": "12345678910",
    "title": "Foo",
    "author": "Mr. Bar",
    "publisher": "Publishorama"

# Work with the classes as objects
# You can pass attributes from the schema to the constructor
foo = Book(isbn="12345678910", title="Foo", author="Mr. Bar",

# Or assign attributes
foo = Book()
foo.isbn = "12345678910"
foo.title = "Foo" = "Mr. Bar"
foo.publisher = "Publishorama"

# In all cases they go through Schema validation, calls to
# .put or .save can result in ValidationError being raised.

# You can then fetch, query and scan your tables.

# Get on the hash key, and/or range key

# Query based on the keys

# Scan based on attributes
Book.scan(author="Mr. Bar")
Book.scan(author__ne="Mr. Bar")


Full documentation can be found online at:


  • Indexes – Currently there is no support for indexes.

  • Schema Migrations

  • Partial updates on save()

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

dynamallow-0.0.3.tar.gz (10.3 kB view hashes)

Uploaded source

Built Distribution

dynamallow-0.0.3-py2.py3-none-any.whl (15.2 kB view hashes)

Uploaded 2 7

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page