Skip to main content

A Pythonic Interface to DynamoDB

Project description

Latest Version https://travis-ci.org/jlafon/PynamoDB.png?branch=devel https://coveralls.io/repos/jlafon/PynamoDB/badge.png?branch=devel https://pypip.in/wheel/pynamodb/badge.png https://pypip.in/license/pynamodb/badge.png

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 http://pynamodb.readthedocs.org/

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'):
    print(user.first_name)

Create a new user:

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

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.

Installation:

$ pip install pynamodb

or install the development version:

$ pip install git+https://github.com/jlafon/PynamoDB#egg=pynamodb

Features

  • 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

Bitdeli badge

Project details


Release history Release notifications | RSS feed

This version

0.1.9

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pynamodb-0.1.9.tar.gz (31.4 kB view details)

Uploaded Source

Built Distribution

pynamodb-0.1.9-py2.py3-none-any.whl (97.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pynamodb-0.1.9.tar.gz.

File metadata

  • Download URL: pynamodb-0.1.9.tar.gz
  • Upload date:
  • Size: 31.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pynamodb-0.1.9.tar.gz
Algorithm Hash digest
SHA256 2712bec9252875a0440bc71a8196917370f04c07b21317c72916737932b0de83
MD5 0caaec5808b83472ce8699e5943a9282
BLAKE2b-256 f5306ad3eb2d8fa7808295439660739af518bcaf014fbe5c7b61b5c022f16d69

See more details on using hashes here.

File details

Details for the file pynamodb-0.1.9-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for pynamodb-0.1.9-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b3d080d6f1d30d8b08df8b535e7136d682b3f33eb73d54c2d16b7cee1b57f826
MD5 5a6f3f3877dace1b8c9f141b4ea5a962
BLAKE2b-256 664a9d43af38116d11663b7e0843ad25c78c888141171c6b96f27779c1554626

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page