Skip to main content

statikk is a single table application (STA) library for DynamoDb.

Project description

Statikk

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

See the usage docs for more

Features

  • Single Table Application architecture

  • 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

statikk-0.1.28.tar.gz (67.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

statikk-0.1.28-py3-none-any.whl (20.2 kB view details)

Uploaded Python 3

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

Hashes for statikk-0.1.28.tar.gz
Algorithm Hash digest
SHA256 0be323cce61578cd010ea46c9487a33d81575a97bbac5610b28417b7b097814b
MD5 cdd4e4e833a31e4b0bbb392f90fa3e3b
BLAKE2b-256 d620f6ee8507f7add1c4820ff0b8ba369b0405634d2630ac97f8c6cc35247559

See more details on using hashes here.

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

Hashes for statikk-0.1.28-py3-none-any.whl
Algorithm Hash digest
SHA256 952ce509e573bf5db159bd9ea2082f2a581a35c365a399aae58a2c394bdb9725
MD5 94a0d7eb6bdaa26a86b051ed181ae8f9
BLAKE2b-256 0deb9156bd1d53c55fb5034c5105e78d372a963a664493a7649c6132365938f3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page