Dynamo3
:Build: |build|_ |coverage|_
:Downloads: http://pypi.python.org/pypi/dynamo3
:Source: https://github.com/stevearc/dynamo3
.. |build| image:: https://travis-ci.org/stevearc/dynamo3.png?branch=master
.. _build: https://travis-ci.org/stevearc/dynamo3
.. |coverage| image:: https://coveralls.io/repos/stevearc/dynamo3/badge.png?branch=master
.. _coverage: https://coveralls.io/r/stevearc/dynamo3?branch=master
Dynamo3 is a library for querying DynamoDB. It is designed to be higher-level
than boto (it's built on top of botocore), to make simple operations easier to
perform and understand.
Features
- Mypy-typed API
- Python object wrappers for most AWS data structures
- Automatic serialization of built-in types, with hooks for custom types
- Automatic paging of results
- Automatic batching for batch_write_item
- Exponential backoff of requests when throughput is exceeded
- Throughput limits to self-throttle requests to a certain rate
- Nose plugin for running DynamoDB Local
DynamoDB features that are not yet supported
- Reading from streams
- Adding/removing tags on a table
- Table backups
- Scanning with segments
- Table replicas (Global tables version 2019.11.21)
- Table auto scaling
- DAX
Note that you can still access these APIs by using DynamoDBConnection.call
,
though you may prefer to go straight to boto3/botocore.
Changelog
1.0.0
- Removed the legacy API (scan, query, update_item, delete_item, put_item, get_item)
- Renamed the new API methods to match the old ones (e.g. scan2 -> scan, query2 -> query)
- Moved constant values into
dynamo3.constants
. This is where you can now find STRING, BINARY, etc - Added mypy typing where possible
- Drop support for Python 2
- Add support for table billing mode (aka on-demand tables)
- Add support for SSE, TTL, and transactions
0.4.10
- Fixed DynamoDB Local link in testing framework
0.4.9
- Feature: Result objects from get_item have an
exists
flag - Feature:
wait
keyword for create and delete table
0.4.8
- Bug fix: Scans/Queries could return incomplete results if AWS returned an empty Items list
0.4.7
- New
RateLimit
class to avoid blowing through your provisioned throughput
0.4.6
- New
Limit
class for more complex query limit behavior - Bug fix: Scan and Query with
Select='COUNT'
will page results properly
0.4.5
- batch_get supports
alias
arg for ExpressionAttributeNames
0.4.4
- Make connection stateless again. Puts consumed_capacity into response object and fixes mystery crash.
0.4.3
- Bug fix: getting ConsumedCapacity doesn't crash for BatchGetItem and BatchWriteItem
- Feature: connection.default_return_capacity
- Feature: hooks for
precall
, postcall
, and capacity
- Better handling of ConsumedCapacity results
0.4.2
- Feature: New methods to take advantage of the newer expression API. See get_item2, put_item2.
- Feature: Shortcut
use_version
for switching over to the new APIs.
0.4.1
- Feature: update_table can create and delete global indexes
- Feature: New methods to take advantage of the newer expression API. See scan2, query2, update_item2, and delete_item2.
0.4.0
- Migrating to botocore client API since services will be deprecated soon
0.3.2
- Bug fix: Serialization of blobs broken with botocore 0.85.0
0.3.1
- Bug fix: Crash when parsing description of table being deleted
0.3.0
- Breakage: Dropping support for python 3.2 due to lack of botocore support
- Feature: Support JSON document data types
Features thanks to DynamoDB upgrades: https://aws.amazon.com/blogs/aws/dynamodb-update-json-and-more/
0.2.2
- Tweak: Nose plugin allows setting region when connecting to DynamoDB Local
0.2.1
- Feature: New, unified
connect
method
0.2.0
- Feature: More expressive 'expected' conditionals
- Feature: Queries can filter on non-indexed fields
- Feature: Filter constraints may be OR'd together
Features thanks to DynamoDB upgrades: http://aws.amazon.com/blogs/aws/improved-queries-and-updates-for-dynamodb/
0.1.3
- Bug fix: sometimes crash after deleting table
- Bug fix: DynamoDB Local nose plugin fails
0.1.2
- Bug fix: serializing ints fails
0.1.1
- Feature: Allow
access_key
and secret_key
to be passed to the DynamoDBConnection.connect_to_*
methods
0.1.0