Welcome, guest | Sign In | My Account | Store | Cart

Notice! PyPM is being replaced with the ActiveState Platform, which enhances PyPM’s build and deploy capabilities. Create your free Platform account to download ActivePython or customize Python with the packages you require and get automatic updates.

Download
ActivePython
INSTALL>
pypm install dynamodb-mapper

How to install dynamodb-mapper

  1. Download and install ActivePython
  2. Open Command Prompt
  3. Type pypm install dynamodb-mapper
 Python 2.7Python 3.2Python 3.3
Windows (32-bit)
1.7.1
1.8.1Never BuiltWhy not?
1.7.1 Available View build log
1.6.2.dev Available View build log
1.6.0 Available View build log
1.3.3 Available View build log
Windows (64-bit)
1.3.3
1.8.1Never BuiltWhy not?
1.3.3 Available View build log
Mac OS X (10.5+)
1.8.1 Available View build log
1.7.1 Available View build log
1.6.2.dev Available View build log
1.6.0 Available View build log
1.4.0 Available View build log
1.3.3 Available View build log
Linux (32-bit)
1.8.1 Available View build log
1.7.1 Available View build log
1.6.2.dev Available View build log
1.6.0 Available View build log
1.5.0 Available View build log
1.4.3 Available View build log
1.4.2 Available View build log
1.4.0 Available View build log
1.3.3 Available View build log
Linux (64-bit)
1.8.1 Available View build log
1.7.1 Available View build log
1.6.2.dev Available View build log
1.6.0 Available View build log
1.5.0 Available View build log
1.4.3 Available View build log
1.4.2 Available View build log
1.4.0 Available View build log
1.3.3 Available View build log
 
Lastest release
version 1.8.1 on Jun 8th, 2013

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:

Subscribe to package updates

Last updated Jun 8th, 2013

Download Stats

Last month:2

What does the lock icon mean?

Builds marked with a lock icon are only available via PyPM to users with a current ActivePython Business Edition subscription.

Need custom builds or support?

ActivePython Enterprise Edition guarantees priority access to technical support, indemnification, expert consulting and quality-assured language builds.

Plan on re-distributing ActivePython?

Get re-distribution rights and eliminate legal risks with ActivePython OEM Edition.