dynamodol.partition_query#

Stores for filtered data sets

Classes

DynamoDbPartitionPersister([db, table_name, ...])

DynamoDbPartitionReader([db, table_name, ...])

Reads from a partition of a DynamoDB table.

DynamoDbPrefixReader([db, table_name, ...])

Reads from a partition of a DynamoDB table, with the sort key filtered by a prefix.

DynamoDbQueryReader([db, table_name, ...])

Reads from a filtered subset of a DynamoDB table.

Exceptions

class dynamodol.partition_query.DynamoDbPartitionPersister(db=None, table_name=None, key_fields=None, data_fields=None, exclude_keys_on_read=True, query=None, key_query=None, attr_query=None, partition=None)[source]#

Bases: DynamoDbBasePersister, DynamoDbPartitionReader

class dynamodol.partition_query.DynamoDbPartitionReader(db=None, table_name=None, key_fields=None, data_fields=None, exclude_keys_on_read=True, query=None, key_query=None, attr_query=None, partition=None)[source]#

Bases: DynamoDbQueryReader

Reads from a partition of a DynamoDB table.

>>> from dynamodol.base import load_sample_data
>>> load_sample_data()
>>> partition_reader = DynamoDbPartitionReader(partition='part1')
>>> list(partition_reader)
[('part1', '01-01'),
 ('part1', '01-02'),
 ('part1', '01-03'),
 ('part1', '01-04'),
 ('part1', '02-01'),
 ('part1', '03-02'),
 ('part1', '04-03'),
 ('part1', 'sort2')]
>>> partition_reader[('part1', '01-01')]
format_get_key(item)[source]#
class dynamodol.partition_query.DynamoDbPrefixReader(db=None, table_name=None, key_fields=None, data_fields=None, exclude_keys_on_read=True, query=None, key_query=None, attr_query=None, partition=None, prefix='')[source]#

Bases: DynamoDbPartitionReader

Reads from a partition of a DynamoDB table, with the sort key filtered by a prefix.

>>> from dynamodol.base import load_sample_data
>>> load_sample_data()
>>> prefix_reader = DynamoDbPrefixReader(key_fields=('partitionkey', 'sortkey'), table_name='sorted_table', partition='part1', prefix='01')
>>> list(prefix_reader)
[('part1', '01-01'),
 ('part1', '01-02'),
 ('part1', '01-03'),
 ('part1', '01-04')]
format_get_key(item)[source]#
class dynamodol.partition_query.DynamoDbQueryReader(db=None, table_name=None, key_fields=None, data_fields=None, exclude_keys_on_read=True, query=None, key_query=None, attr_query=None)[source]#

Bases: DynamoDbBaseReader

Reads from a filtered subset of a DynamoDB table.

Every query must include the partition key (the first key field).

>>> from dynamodol.base import load_sample_data
>>> load_sample_data()

Querying on the partition key and sort key

>>> query_reader = DynamoDbQueryReader(query={'partitionkey': 'part1', 'sortkey': '04-03'})
>>> list(query_reader)
[('part1', '04-03')]

Querying on a partition and arbitrary attribute key.

>>> query_reader = DynamoDbQueryReader(query={'partitionkey': 'part1', 'data': 'a'})
>>> list(query_reader)
[('part1', '01-01'), ('part1', '01-04')]
>>> query_reader[('part1', '01-04')]

A more complex query. Note that numerical values and numerical comparisons are not yet supported.

>>> query = {'partitionkey': 'part2', 'sortkey': {'$gt': '02-01'}, 'moredata': {'$contains': 'r'}}
>>> query_reader = DynamoDbQueryReader(query=query)
>>> list(query_reader)
[('part2', '03-02'), ('part2', '04-03')]
exception dynamodol.partition_query.NoSuchKeyError[source]#

Bases: KeyError