Custom Types¶
Module: aiodynamodb.custom_types
Import: from aiodynamodb.custom_types import Timestamp, TimestampMillis, ...
Timestamp types¶
Pydantic type annotations for datetime fields that control how datetimes are serialized as integers in DynamoDB.
Timestamp¶
Serializes a datetime to Unix seconds (integer). Stored as DynamoDB Number (N).
TimestampMillis¶
Serializes a datetime to Unix milliseconds (integer). Stored as DynamoDB Number (N).
TimestampMicros¶
type TimestampMicros = Annotated[datetime, PlainSerializer(lambda d: int(d.timestamp() * 1_000_000))]
Serializes a datetime to Unix microseconds (integer). Stored as DynamoDB Number (N).
TimestampNanos¶
type TimestampNanos = Annotated[datetime, PlainSerializer(lambda d: int(d.timestamp() * 1_000_000_000))]
Serializes a datetime to Unix nanoseconds (integer). Stored as DynamoDB Number (N).
JSONStr[T]¶
type JSONStr[T: BaseModel] = Annotated[
T,
PlainSerializer(lambda v: v.model_dump_json()),
BeforeValidator(lambda v: json.loads(v) if isinstance(v, str) else v),
]
Stores a Pydantic model T as a JSON string in DynamoDB (String/S attribute). On read, the JSON string is parsed back into T transparently.
class Address(BaseModel):
street: str
city: str
@table("profiles")
class Profile(DynamoModel):
profile_id: HashKey[str]
address: JSONStr[Address] # stored as '{"street":"...","city":"..."}'
KeyT¶
type KeyT = int | str | Timestamp | TimestampMillis | TimestampMicros | TimestampNanos | datetime | IntEnum | StrEnum
Union type accepted by client method key parameters (hash_key, range_key arguments to get(), update(), delete(), and operation dataclasses). Not intended for use in model field annotations.
IntEnum values are serialized as DynamoDB Number (N) key attributes. StrEnum values are serialized as DynamoDB String (S) key attributes.
ReturnValues¶
Valid values for the return_values parameter of db.update().
| Value | Returns |
|---|---|
"NONE" |
Nothing (default DynamoDB behavior) |
"ALL_OLD" |
All attributes before the update |
"UPDATED_OLD" |
Only updated attributes before the update |
"ALL_NEW" |
All attributes after the update |
"UPDATED_NEW" |
Only updated attributes after the update |