db_core.py

Code Hygiene Score: 100

Keine Issues gefunden.

Dependencies 3

Klassen 1

Code

"""
Database Core - Connection Management

Single Responsibility: Database connection lifecycle and query execution.
All other database modules (mixins) inherit from this base class.
"""

import mysql.connector
from mysql.connector import Error

from config import DB_CONFIG


class DatabaseCore:
    """Base database class with connection management.

    Provides:
    - Connection lifecycle (connect, disconnect)
    - Query execution (execute, commit)

    All database mixins expect these methods to be available via self.
    """

    def __init__(self):
        """Initialize database instance without connection."""
        self.connection = None

    def connect(self) -> bool:
        """Establish database connection.

        Returns:
            True if connection successful, False otherwise.
        """
        try:
            self.connection = mysql.connector.connect(**DB_CONFIG)
            return True
        except Error as e:
            print(f"Database connection error: {e}")
            return False

    def disconnect(self):
        """Close database connection if open."""
        if self.connection and self.connection.is_connected():
            self.connection.close()

    def execute(self, query: str, params: tuple = None):
        """Execute a query and return the cursor.

        Args:
            query: SQL query string
            params: Optional tuple of query parameters

        Returns:
            Cursor with query results (dictionary mode)
        """
        cursor = self.connection.cursor(dictionary=True)
        cursor.execute(query, params or ())
        return cursor

    def commit(self):
        """Commit the current transaction."""
        self.connection.commit()

    def is_connected(self) -> bool:
        """Check if database connection is active.

        Returns:
            True if connected, False otherwise.
        """
        return self.connection is not None and self.connection.is_connected()
← Übersicht Graph