Files
finetuning_aufgabe4/baseStrategy.py
T

52 lines
1.6 KiB
Python

from setup import get_connection
import time
import psycopg2
import mariadb
class BaseStrategy:
def __init__(self, conn: psycopg2.extensions.connection | mariadb.Connection, db_name, queries: dict[str, str]):
self.connection = conn
self.cursor = conn.cursor()
self.db_name = db_name
self.queries = queries
self.index_config = None # vom Manager via setup_db gesetzt
def set_queries(self, queries):
self.queries = queries
def run(self, aufgabe: str | None = None):
strategy_name = self.__class__.__name__
prefix_parts = []
if aufgabe:
prefix_parts.append(aufgabe)
prefix_parts.append(strategy_name)
if self.index_config:
prefix_parts.append(f"idx={self.index_config}")
prefix = " | ".join(prefix_parts)
for query_name, query in self.queries.items():
print(f"Running: [{prefix}] / {query_name}\n")
start = time.time()
self.cursor.execute(query)
end = time.time()
self._print_result(strategy, end, start)
self.connection.commit()
def _print_result(self, strategy, end, start):
duration = end - start
minutes = int(duration // 60)
seconds = duration % 60
print(f"---- RESULTS FROM {self.db_name} | {prefix} | Query: {query_name} ----\n")
print(f"duration: {minutes}m {seconds:.2f}s")
_print_cursor(self.cursor)
def _print_cursor(cursor):
for row in cursor.fetchall():
print(f"{row} '\n'")