first add
This commit is contained in:
40
examples/04_async_crud.py
Normal file
40
examples/04_async_crud.py
Normal file
@@ -0,0 +1,40 @@
|
||||
"""
|
||||
Async example using the provided async engine/session and generic AsyncRepository.
|
||||
|
||||
Run: uv run python examples/04_async_crud.py
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
from typing import Optional
|
||||
from sqlmodel import select, SQLModel, Field
|
||||
|
||||
from sqlmodel_pg_kit import create_all, AsyncRepository
|
||||
from sqlmodel_pg_kit.db import get_async_session
|
||||
|
||||
|
||||
class Hero(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
name: str = Field(index=True)
|
||||
age: Optional[int] = None
|
||||
|
||||
|
||||
async def amain():
|
||||
# Ensure tables exist (sync helper is fine to call once)
|
||||
create_all()
|
||||
|
||||
repo = AsyncRepository(Hero)
|
||||
|
||||
# Clean and insert using async session
|
||||
async with get_async_session() as s:
|
||||
await s.execute(Hero.__table__.delete())
|
||||
await s.commit()
|
||||
|
||||
await repo.create(s, {"name": "Async Hero", "age": 7})
|
||||
|
||||
res = await s.execute(select(Hero))
|
||||
heroes = res.scalars().all()
|
||||
print([h.name for h in heroes])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(amain())
|
||||
Reference in New Issue
Block a user