dynamodol.partition_query

Stores for filtered data sets

class dynamodol.partition_query.DynamoDbPartitionPersister(db: Any = None, table_name: str = None, key_fields: tuple[str] = None, data_fields: tuple[str] = None, exclude_keys_on_read: bool = True, query: Any = None, key_query: Any = None, attr_query: Any = None, partition: str = None)[source]
class dynamodol.partition_query.DynamoDbPartitionReader(db: Any = None, table_name: str = None, key_fields: tuple[str] = None, data_fields: tuple[str] = None, exclude_keys_on_read: bool = True, query: Any = None, key_query: Any = None, attr_query: Any = None, partition: str = None)[source]

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]

TODO: replace with _id_of_key, etc.

class dynamodol.partition_query.DynamoDbPrefixReader(db: Any = None, table_name: str = None, key_fields: tuple[str] = None, data_fields: tuple[str] = None, exclude_keys_on_read: bool = True, query: Any = None, key_query: Any = None, attr_query: Any = None, partition: str = None, prefix: str = '')[source]

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]

TODO: replace with _id_of_key, etc.

class dynamodol.partition_query.DynamoDbQueryReader(db: Any = None, table_name: str = None, key_fields: tuple[str] = None, data_fields: tuple[str] = None, exclude_keys_on_read: bool = True, query: Any = None, key_query: Any = None, attr_query: Any = None)[source]

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]