skip to navigation
skip to content

pynamodb 0.1.7

A Pythonic Interface to DynamoDB

Latest Version: 2.1.4

A Pythonic interface for Amazon’s DynamoDB that supports Python 2 and 3.

DynamoDB is a great NoSQL service provided by Amazon, but the API is verbose. PynamoDB presents you with a simple, elegant API.

See documentation at

Basic Usage

Create a model that describes your DynamoDB table.

from pynamodb.models import Model
from pynamodb.attributes import UnicodeAttribute

class UserModel(Model):
        A DynamoDB User
        table_name = 'dynamodb-user'
        email = UnicodeAttribute(null=True)
        first_name = UnicodeAttribute(range_key=True)
        last_name = UnicodeAttribute(hash_key=True)

Now, search your table for all users with a last name of ‘Smith’ and whose first name begins with ‘J’:

for user in UserModel.query('Smith', first_name__begins_with='J'):

Create a new user:

user = UserModel('John', 'Denver')

Advanced Usage

Wan’t to use indexes? No problem:

from pynamodb.models import Model
from pynamodb.indexes import GlobalSecondaryIndex, AllProjection
from pynamodb.attributes import NumberAttribute, UnicodeAttribute

class ViewIndex(GlobalSecondaryIndex):
    read_capacity_units = 2
    write_capacity_units = 1
    projection = AllProjection()
    view = NumberAttribute(default=0, hash_key=True)

class TestModel(Model):
    table_name = 'TestModel'
    forum = UnicodeAttribute(hash_key=True)
    thread = UnicodeAttribute(range_key=True)
    view = NumberAttribute(default=0)
    view_index = ViewIndex()

Now query the index for all items with 0 views:

for item in TestModel.view_index.query(0):
    print("Item queried from index: {0}".format(item))

It’s really that simple.


$ pip install pynamodb

or install the development version:

$ pip install git+


  • Python 3 support
  • Python 2 support
  • An ORM-like interface with query and scan filters
  • Includes the entire DynamoDB API
  • Supports both unicode and binary DynamoDB attributes
  • Support for global secondary indexes, local secondary indexes, and batch operations
  • Provides iterators for working with queries, scans, that are automatically paginated
  • Automatic pagination for bulk operations
  • Complex queries
File Type Py Version Uploaded on Size
pynamodb-0.1.7-py2.py3-none-any.whl (md5) Python Wheel 2.7 2014-01-29 36KB
pynamodb-0.1.7.tar.gz (md5) Source 2014-01-29 30KB