Typed library for interacting with DynamoDb tables.
Available on PyPI
pip install dynamo-dao
The following example code shows some basic usage of this package. Note that the ExampleDao
must define 4 abstract properties:
table_name
- Name of the DynamoDb table resource (maps directly to what you'd see on the AWS console).unique_key
- The list of keys that together uniquely define an entry in the table.convert_to_dynamo
- A method which takes in the object and converts it to the entry in the DynamoDb tableconvert_from_dynamo
- The opposite ofconvert_to_dynamo
from typing import NamedTuple
from dynamo_dao import Dao, DynamoObject
class Example(NamedTuple):
foo: str
bar: int
class ExampleDao(Dao[Example]):
table_name = "example"
unique_key = ["foo"]
def convert_to_dynamo(self, var: Example) -> DynamoObject:
return {"foo": var.foo, "bar": var.bar}
def convert_from_dynamo(self, var: DynamoObject) -> Example:
return Example(foo=str(var["foo"]), bar=int(var["bar"]))
example_dao = ExampleDao()
example = Example(foo="hi", bar=1)
example_dao.create(example)
result = example_dao.read_one("foo", "hi")
assert example == result
The base dao is a generic object, which means child classes will benefit from type checking on functions like read
and create
.
In the example above, the type of result
is Example
.