Hydration
Hydration is the post-execution step that maps row data into application-level structures. By default, SQLStratum hydrates to dictionaries.
Dict Hydration
q = (
SELECT(users.c.id, users.c.email)
.FROM(users)
.WHERE(users.c.id == 1)
.hydrate(dict)
)
row = runner.fetch_one(q)
Dataclass Hydration
from dataclasses import dataclass
@dataclass
class User:
id: int
email: str
q = SELECT(users.c.id, users.c.email).FROM(users).WHERE(users.c.id == 1).hydrate(User)
row = runner.fetch_one(q)
Optional Pydantic Hydration
SQLStratum does not depend on Pydantic, but it provides an optional adapter for Pydantic v2 models.
Install:
Use the adapter directly:
from pydantic import BaseModel
from sqlstratum.hydrate.pydantic import hydrate_model
class User(BaseModel):
id: int
email: str
row = {"id": "1", "email": "a@b.com"}
user = hydrate_model(User, row)
Or use the wrapper pattern with chainable hydration: