Fluent SQL without injection risks: The wsqlite QueryBuilder.
String-formatting SQL queries in Python is how data leaks happen. wsqlite's fluent QueryBuilder lets you build complex queries with JOINs, aggregations, and subqueries with total SQL injection immunity.
Here is how you use QueryBuilder Fluent SQL API in production with wsqlite:
from wsqlite.builders import QueryBuilder
from wsqlite.core.connection import get_connection
with get_connection("ecommerce.db") as conn:
results = (
QueryBuilder("users")
.select("users.id", "users.name", "COUNT(orders.id) as order_count")
.join("orders", "users.id = orders.user_id", "LEFT")
.where("users.status", "=", "active")
.group_by("users.id")
.having("order_count", ">", 5)
.order_by("order_count", "DESC")
.limit(10)
.execute(conn)
)
for row in results:
print(f"User: {row['name']} | Orders: {row['order_count']}")
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)