9. Query Builder¶
Query builder for constructing SQL queries safely.
- wpostgresql.builders.query_builder.validate_identifier(identifier: str) None[source]¶
Validate SQL identifier to prevent SQL injection.
- class wpostgresql.builders.query_builder.QueryBuilder(table_name: str)[source]¶
Bases:
objectBuilder for constructing SQL queries safely.
- __init__(table_name: str)[source]¶
Initialize query builder.
- Parameters:
table_name – Name of the table to query.
- where(field: str, operator: str, value: Any) QueryBuilder[source]¶
Add WHERE condition.
- Parameters:
field – Field name.
operator – Operator (=, <, >, <=, >=, !=, LIKE, IN).
value – Value to compare.
- Returns:
Self for chaining.
- order_by(field: str, descending: bool = False) QueryBuilder[source]¶
Add ORDER BY clause.
- Parameters:
field – Field to order by.
descending – If True, order descending.
- Returns:
Self for chaining.
- limit(limit: int) QueryBuilder[source]¶
Add LIMIT clause.
- Parameters:
limit – Maximum number of rows.
- Returns:
Self for chaining.
- offset(offset: int) QueryBuilder[source]¶
Add OFFSET clause.
- Parameters:
offset – Number of rows to skip.
- Returns:
Self for chaining.
- build_select() tuple[str, tuple][source]¶
Build SELECT query.
- Returns:
Tuple of (query_string, values).
- build_count() tuple[str, tuple][source]¶
Build COUNT query.
- Returns:
Tuple of (query_string, values).
- build_delete() tuple[str, tuple][source]¶
Build DELETE query.
- Returns:
Tuple of (query_string, values).
- reset() QueryBuilder[source]¶
Reset the builder to initial state.
- Returns:
Self for chaining.
9.1. Usage¶
from wpostgresql import QueryBuilder
query = (
QueryBuilder()
.select("id", "name", "email")
.from_table("users")
.where("age", ">", 18)
.order_by("name")
.limit(10)
)
sql, params = query.build()