Skip to main content

awspytools

##DynamoDBDataStore

This is a helper python package to make DynamoDB easier to work with.

To get started, import DynamoDBDatastore from awspytools:

from awspytools import DynamoDBDataStore

Initialize a store using the Table Name:

store = DynamoDBDataStore(table_name='DynamoDB Table Name')

By default, we assume the following hash, sort and index keys:

hash_key = 'PK'
sort_key = 'SK'
GSI1_HASH_KEY = 'GSI1PK'
GSI1_SORT_KEY = 'GSI1SK'
GSI2_HASH_KEY = 'GSI2PK'
GSI2_SORT_KEY = 'GSI2SK'

To override these values, you may define your store as follows:

store = DynamoDBDataStore(
    table_name='DynamoDB Table Name',
    hash_key='custom_hash',
    sort_key='custom_sort',
    use_default_index_keys=False
)

You may add custom Index keys as follows:

store.add_index_key('custom gsi 1')

or you may add many index keys as follows:

store.add_index_keys(['custom gsi 1 hash', 'custom gsi 1 sort'])

To get a document, do the following:

result = store.get_document(index=('hash_key', 'sort_key'), return_index=True)

If you specify:

return_index=False

The response object will not have the hash /sort key or GSI keys specified in the response.

To save a document, simple do:

store.save_document(
    document={
        "number": 1,
        "hello": "world",
        "foo": ['bar', 'spam'],
        "foo": {
            "spam": "eggs"
        }
    },
    index=('hash_id', 'sort_id')
)

To get multiple documents, you need to provide a query. Note this paginates the result for you so all documents are returned!

query = {
		'ExpressionAttributeNames': {'#PK': 'PK'},
		'ExpressionAttributeValues': {':PK': {'S': 'hash_key'}},
		'KeyConditionExpression': '#PK = :PK'
	}
result = store.get_documents(query)

To delete a document: result = store.delete_document(index=('hash_key', 'sort_key'))

To perform a batch request, we have a wrapper for boto3's batch_write_item:

batch_request = store.batch_request(
    request_items=[ 
         { 
            "DeleteRequest": {...}, #As per boto3's parameter structure
            "PutRequest": {...} #As per boto3's document structure parameter structure
         }
      ]
)

To perform a transaction:

transaction_items = [
    {
        'Update': {
            'Key': {
                'PK': {'S': 'hash'},
                'SK': {'S': 'sort'},
            },
            'UpdateExpression': 'SET some_key = :some_value',
            'ExpressionAttributeValues': {
                ':some_value': {'S': 'hello world'},
            },
            'TableName': store.table_name
        }
    },
    {
        'Update': {
            'Key': {
                'PK': {'S': 'hash'},
                'SK': {'S': 'sort'},
            },
            'UpdateExpression': 'SET new_key = :new_value',
            'ExpressionAttributeValues': {
                ':new_value': {'S': 'hello world'},
            },
            'TableName': store.table_name
        }
    }
]
store.transaction_write(transaction_items, "some_unique_id")

Metadata

Release files for awspytools 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for awspytools 0.1.1
File Size Uploaded
awspytools-0.1.1.tar.gz 4.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for awspytools 0.1.1
File Interpreter ABI Platform
awspytools-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 10.4 kB

Release files / awspytools-0.1.1.tar.gz

Download URL awspytools-0.1.1.tar.gz
Size 4.8 kB
Tags Source
SHA-256 checksum
How to use checksums
496a4e19943329781c74c3ff5260c6f3c4d658e015ee57882357505481bc9f2d
BLAKE2b-256 checksum
How to use checksums
84fbfae418e6a13f335a6b31cb0bdcaf869be0bc78875052ac1c7d0e92ae9c3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.13

Release files / awspytools-0.1.1-py3-none-any.whl

Download URL awspytools-0.1.1-py3-none-any.whl
Size 5.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4a196cd312aa08d68d619b3a6dd410e9d0ffeed1c36a4d6ff67977cb1607856f
BLAKE2b-256 checksum
How to use checksums
4a5c7f501a9ee501d1a541435cff76f29b587c7e6792eb11932602855e17c499
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.13

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page