statikk is a single table application (STA) library for DynamoDb.
Project description
An ORM-like Single Table Application (STA) architecture library for Python and DynamoDb. Makes it really eason to set up and work with STAs.
The library is in alpha. Constant work is being done on it as I’m developing my game.
Requirements
Pydantic 2.3+
Python 3.8+
Probably works on older versions of Python, but we haven’t tested it.
Installation
pip install statikk
Basic Usage
from statikk.models import DatabaseModel, Table, GlobalSecondaryIndex, KeySchema
class MyAwesomeModel(DatabaseModel):
player_id: str
tier: str
name: str = "Foo"
values: set = {1, 2, 3, 4}
cost: int = 4
@classmethod
def index_definitions(cls) -> dict[str, IndexFieldConfig]:
return {"main-index": IndexFieldConfig(pk_fields=["player_id"], sk_fields=["tier"])}
table = Table(
name="my-dynamodb-table",
key_schema=KeySchema(hash_key="id"),
indexes=[
GSI(
name="main-index",
hash_key=Key(name="gsi_pk"),
sort_key=Key(name="gsi_sk"),
)
],
models=[MyAwesomeModel],
)
def main():
my_model = MyAwesomeModel(id="foo", player_id="123", tier="gold")
my_model.save()
MyAwesomeModel.update("foo").set(name="Bar").delete("values", {1}).add("cost", 1).execute() # Update multiple fields at once
my_model = table.get("foo", MyAwesomeModel) # Get a model by its primary key using the table
my_model = MyAwesomeModel.get("foo") # Get a model by its primary key using the model's class
my_model.gsi_pk # returns "123"
my_model.gsi_sk # returns "MyAwesomeModel|gold"
my_model.delete() # Delete a model
Features
Easy model definition using Pydantic
Automatic index value construction based on marked fields.
Get, Update, Delete, Batch Get, Batch Write, Query, and Scan operations
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file statikk-0.1.28.tar.gz.
File metadata
- Download URL: statikk-0.1.28.tar.gz
- Upload date:
- Size: 67.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0be323cce61578cd010ea46c9487a33d81575a97bbac5610b28417b7b097814b
|
|
| MD5 |
cdd4e4e833a31e4b0bbb392f90fa3e3b
|
|
| BLAKE2b-256 |
d620f6ee8507f7add1c4820ff0b8ba369b0405634d2630ac97f8c6cc35247559
|
File details
Details for the file statikk-0.1.28-py3-none-any.whl.
File metadata
- Download URL: statikk-0.1.28-py3-none-any.whl
- Upload date:
- Size: 20.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
952ce509e573bf5db159bd9ea2082f2a581a35c365a399aae58a2c394bdb9725
|
|
| MD5 |
94a0d7eb6bdaa26a86b051ed181ae8f9
|
|
| BLAKE2b-256 |
0deb9156bd1d53c55fb5034c5105e78d372a963a664493a7649c6132365938f3
|