2.3 KiB
2.3 KiB
Database API Documentation
Overview
The database module provides database connection management and basic operations for both PostgreSQL and SQLite databases. Key features include:
- Connection pooling for PostgreSQL
- Context managers for safe connection handling
- Unified interface for both database types
- SQL execution helpers
Connection Management
get_db_connection(db_type='postgres')
Context manager for database connections.
Parameters:
db_type: 'postgres' or 'sqlite' (default: 'postgres')
Usage:
with get_db_connection() as conn:
# Use connection
get_db_cursor(cursor_factory=None, db_type='postgres')
Context manager for database cursors with automatic commit/rollback.
Parameters:
cursor_factory: Optional cursor factory (e.g., psycopg2.extras.DictCursor)db_type: 'postgres' or 'sqlite' (default: 'postgres')
Usage:
with get_db_cursor() as cursor:
cursor.execute("SELECT * FROM table")
SQL Execution Helpers
execute_query(query, params=None, cursor_factory=None, fetch_one=False, db_type='postgres')
Executes a query and returns results.
Parameters:
query: SQL query stringparams: Query parameters (tuple/dict)cursor_factory: Optional cursor factoryfetch_one: Return single row if Truedb_type: Database type
Returns:
- Query results (list or single row)
execute_update(query, params=None, db_type='postgres')
Executes an update/insert/delete query.
Parameters:
query: SQL query stringparams: Query parameters (tuple/dict)db_type: Database type
Returns:
- Number of affected rows
Initialization
init_sqlite_db()
Initializes SQLite database tables (api_endpoints, api_logs, api_users, api_operations).
Configuration
Module uses configuration from:
DB_CONFIGfor PostgreSQLSQLITE_CONFIGfor SQLite
Error Handling
- All database operations are wrapped in try/except blocks
- Errors are logged with detailed context
- Connections are automatically returned to pool (PostgreSQL) or closed (SQLite)
Best Practices
- Always use context managers (
withstatements) for connections/cursors - For PostgreSQL, prefer connection pooling for better performance
- For complex transactions, use explicit commit/rollback