A DynamoDB library based on boto3
Project description
# Dynamatic
Dynamatic is a python library for working with DynamoDB. It is NOT an ORM. It sits somewhere between the low-level [boto3](https://github.com/boto/boto3) library (on which Dynamatic is based) and high-level ORMs like [PynamoDB](https://github.com/pynamodb/PynamoDB).
## Motivation
First, I was inspired by [this blog post](https://www.trek10.com/blog/dynamodb-single-table-relational-modeling/) which was inspired by [this excellent re:Invent 2018 session by Rick Houlihan](https://youtu.be/HaEPXoXVf2k) about how to properly model data in DynamoDB for efficiency and scale.
Second, I did not want an ORM. ORMs like PynamoDB package their own methods of defining object schemas but there are already excellent libraries out there like [Pydantic](https://github.com/samuelcolvin/pydantic) or [Marshmallow](https://github.com/marshmallow-code/marshmallow). They also tend to impose traditional relational database patterns (like Active Record) that do not scale well.
Third, boto3 is a great library but its DynamoDB API is painfully low-level and not particularly “Pythonic”. Working with advanced features like [Update Expressions](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html) and [Projection Expressions](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ProjectionExpressions.html) is complex and unintutive.
So this library aims to be a happy medium: Providing enough abstraction and “developer ergonomics” to get up and running with DynamoDB quickly, while not getting in the way with high-level ORM features.
## Installation
Dynamatic requires Python 3.6 or later. You can install it via pip.
`bash pip install dynamatic `
## Usage
TODO! Documentation and usage examples coming soon!
## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
## License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for dynamatic-1.0.0b1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c436807c361ecec2a00a8e03995659406e426c1bc8221c699d1276d07afce8b4 |
|
MD5 | 3fdf6a7d022f7c8be81fbc697fd4dfb6 |
|
BLAKE2b-256 | 94561aa19e7e388126bab0064d5caa709f0a165c3f189d76f0f2f9b0935559bb |