skip to navigation
skip to content

pynamodb 0.1.12

A Pythonic Interface to DynamoDB

Latest Version: 3.2.1

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.

Useful links:

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')

Retrieve an existing user:

    user = UserModel.get('John', 'Denver')
except UserModel.DoesNotExist:
    print("User does not exist")

Advanced Usage

Want 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.12-py2.py3-none-any.whl (md5) Python Wheel 3.3 2014-03-18 38KB
pynamodb-0.1.12.tar.gz (md5) Source 2014-03-18 32KB