Blocking your FastAPI event loop with synchronous database queries kills web concurrency. wsqlite gives you full async/await support with dedicated connection pooling right out of the box.
Here is how you use Async CRUD Operations & Async Connection Pool in production with wsqlite:
import asyncio
from pydantic import BaseModel
from wsqlite import WSQLite
class Task(BaseModel):
id: int
title: str
completed: bool = False
db = WSQLite(Task, "tasks.db")
async def main():
# Insert asynchronously
await db.insert_async(Task(id=1, title="Deploy microservice"))
# Read asynchronously without blocking event loop
tasks = await db.get_all_async()
print(f"Pending tasks: {len(tasks)}")
asyncio.run(main())
Why developers love wsqlite:
- Define database tables using standard Pydantic v2 models.
- Auto-syncs columns on startup without writing manual migrations.
- Thread-safe connection pooling with WAL mode enabled by default (5,000+ inserts/sec).
- Full sync and async/await support.
Check out the repo on GitHub!
Top comments (0)