Skip to main content

CODITECT Database Backend Abstraction Layer

Provides unified interface for SQLite (local) and PostgreSQL (production) backends. Automatically selects backend based on environment configuration.

Usage: from db_backend import get_database, DatabaseBackend

db = get_database()  # Auto-selects based on CODITECT_DB_BACKEND env var
db.execute("SELECT * FROM messages WHERE role = %s", ("user",))
results = db.fetchall()

Environment Variables: CODITECT_DB_BACKEND: "sqlite" (default) or "postgresql" CODITECT_DB_PATH: SQLite database path (for sqlite backend) CODITECT_PG_HOST: PostgreSQL host CODITECT_PG_PORT: PostgreSQL port (default: 5432) CODITECT_PG_DATABASE: PostgreSQL database name CODITECT_PG_USER: PostgreSQL username CODITECT_PG_PASSWORD: PostgreSQL password (or use Secret Manager) CODITECT_PG_SSL_MODE: SSL mode (default: require)

# For GKE/Cloud SQL:
CODITECT_PG_SOCKET_DIR: Cloud SQL socket directory
CODITECT_PG_INSTANCE: Cloud SQL instance connection name

Author: CODITECT Team Version: 1.0.0 Created: 2025-12-23

File: db_backend.py

Classes

DatabaseBackend

Abstract base class for database backends.

SQLiteBackend

SQLite database backend for local development.

PostgreSQLBackend

PostgreSQL database backend for production.

QueryBuilder

Cross-backend SQL query builder.

Functions

get_database(backend)

Factory function to get appropriate database backend.

init_database(backend)

Initialize and return database backend with schema setup.

migrate_sqlite_to_postgres(sqlite_path, pg_config, batch_size)

Migrate data from SQLite to PostgreSQL.

connect()

Establish database connection.

close()

Close database connection.

execute(query, params)

Execute a query with optional parameters.

executemany(query, params_list)

Execute a query with multiple parameter sets.

fetchone()

Fetch one result from last query.

fetchall()

Fetch all results from last query.

fetchmany(size)

Fetch specified number of results.

commit()

Commit current transaction.

rollback()

Rollback current transaction.

get_placeholder()

Get parameter placeholder style ('?' for SQLite, '%s' for PostgreSQL).

adapt_query(query)

Adapt query syntax for specific backend.

transaction()

Context manager for transactions.

Usage

python db_backend.py