Querying¶
Every registered model has a Table handle:
flavors = db[Flavor]
Simple Filters¶
Use dictionaries for common equality and comparison filters:
result = await db[Flavor].find_many(
{"rating": {"gte": 4}, "name": {"like": "Van%"}},
order_by=["name"],
)
Primary Key Lookup¶
flavor = await db[Flavor].find_one("vanilla")
find_one accepts a primary key value or a filter expression.
Expression Queries¶
Use expression helpers when dictionary filters are not enough:
from ormdantic import column, select_query
query = select_query(
"flavor",
column("name"),
column("rating"),
where=column("rating") >= 4,
order_by=[column("name").asc()],
)
rows = await db[Flavor].select(query)
Expression helpers include column, literal, case, cast, tuple_, aggregate helpers, exists, subquery, cte, over, and raw_sql_safe.
Counts And Bulk Updates¶
count = await db[Flavor].count({"rating": {"gte": 4}})
updated = await db[Flavor].update_where(
{"rating": {"lt": 0}},
{"rating": 0},
)
Result Objects¶
find_many returns Result[Model]:
result.offset
result.limit
result.data
The data list contains hydrated Pydantic models.