Skip to main content

Dynamodb-mapper – a DynamoDB object mapper, based on boto.

Presentation

DynamoDB is a minimalistic NoSQL engine provided by Amazon as a part of their AWS product.

DynamoDB allows you to stores documents composed of unicode strings or numbers as well as sets of unicode strings and numbers. Each tables must define a hash key and may define a range key. All other fields are optional.

Dynamodb-mapper brings a tiny abstraction layer over DynamoDB to overcome some of the limitations with no performance compromise. It is highly inspired by the mature MoongoKit project

Requirements

  • Boto = 2.6.0

  • AWS account

Highlights

  • Python <–> DynamoDB type mapping

  • Deep schema definition and validation with Onctuous (new in 1.8.0)

  • Multi-target transaction (new in 1.6.0)

  • Sub-transactions (new in 1.6.2)

  • Migration engine (new in 1.7.0)

  • Smart conflict detection (new in 1.7.0)

  • Full low-level chunking abstraction for scan, query and get_batch

  • Default values

  • Auto-inc hash_key

  • Framework agnostic

Example usage

We assume you’ve correctly set your Boto credentials or use ddbmock.

Quick install

$ pip install dynamodb-mapper

If you have not yet configured Boto, you may simply

$ export AWS_ACCESS_KEY_ID=<your id key here>
$ export AWS_SECRET_ACCESS_KEY=<your secret key here>

First Model

from dynamodb_mapper.model import DynamoDBModel


class DoomMap(DynamoDBModel):
    __table__ = u"doom_map"
    __hash_key__ = u"episode"
    __range_key__ = u"map"
    __schema__ = {
        u"episode": int,
        u"map": int,
        u"name": unicode,
        u"cheats": set,
    }
    __defaults__ = {
        "cheats": set([u"Konami"]),
    }

Initial Table creation

from dynamodb_mapper.model import ConnectionBorg

conn = ConnectionBorg()
conn.create_table(DoomMap, 10, 10, wait_for_active=True)

Model Usage

e1m1 = DoomMap()
e1m1.episode = 1
e1m1.map = 1
e1m1.name = u"Hangar"
e1m1.cheats = set([u"idkfa", u"iddqd", u"idclip"])
e1m1.save()


# Later on, retrieve that same object from the DB...
e1m1 = DoomMap.get(1, 1)

# query all maps of episode 1
e1_maps = DoomMap.query(hash_key=1)

# query all maps of episode 1 with 'map' hash_key > 5
from boto.dynamodb.condition import GT
e1_maps_after_5 = DoomMap.query(
    hash_key=1,
    range_key_condition=GT(5))

Contribute

Want to contribute, report a but of request a feature ? The development goes on at Ludia’s BitBucket account:

Dynamodb-mapper

Onctuous

Metadata

Release files for dynamodb-mapper 1.8.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dynamodb-mapper 1.8.1
File Size Uploaded
dynamodb-mapper-1.8.1.tar.gz 26.1 kB Details

Release files / dynamodb-mapper-1.8.1.tar.gz

Download URL dynamodb-mapper-1.8.1.tar.gz
Size 26.1 kB
Tags Source
SHA-256 checksum
How to use checksums
8f93a15a68bde9aefda33914cb3ed62b9f819df7ba20e4153633667829cb6982
BLAKE2b-256 checksum
How to use checksums
7c7463425222b18532ad3b68b553fb0dddd16d6c0ca429b800a249dfce3a81af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.8.1 This release

1 release file

1.8.0

1 release file

1.7.1

1 release file

1.7.0

1 release file

1.6.2

1 release file

1.6.1

1 release file

1.6.0

1 release file

1.5.0

1 release file

1.4.3

1 release file

1.4.2

1 release file

1.4.1

1 release file

1.4.0

1 release file

1.3.3

1 release file

1.3.2

1 release file

1.3.1

1 release file

1.3.0

1 release file

1.2.2

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.0

1 release file

1.0.2

1 release file

1.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page