Python ORM style interface to Amazon (AWS) DynamoDB using Schematics or Marshmallow for Schema validation
Project description
DynamoDB + Marshmallow == Dynamallow
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
Book.put({
"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",
publisher="Publishorama")
foo.save()
# Or assign attributes
foo = Book()
foo.isbn = "12345678910"
foo.title = "Foo"
foo.author = "Mr. Bar"
foo.publisher = "Publishorama"
foo.save()
# 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
Book.get(isbn="12345678910")
# Query based on the keys
Book.query(isbn__begins_with="12345")
# Scan based on attributes
Book.scan(author="Mr. Bar")
Book.scan(author__ne="Mr. Bar")
Documentation
Full documentation can be found online at:
TODO
Indexes – Currently there is no support for indexes.
Schema Migrations
Partial updates on save()
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 Distribution
dynamallow-0.0.3.tar.gz
(10.3 kB
view hashes)
Built Distribution
Close
Hashes for dynamallow-0.0.3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 271fe5c68b39d20d126284649deb4c5a0c59ff8f938492b6d41059c37fc01077 |
|
MD5 | 0920ab97f5bb180b9abc6f89593591aa |
|
BLAKE2b-256 | f4d4575cc74cba280993f85d6e61f1fed9aaee7ceb1911e7e2d6974abd273892 |