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: object

Builder 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()