#!/usr/bin/env python3 import sqlite3 import sys def list_tables(conn): """Gibt eine Liste aller Tabellennamen in der Datenbank zurück.""" cursor = conn.cursor() cursor.execute("SELECT name FROM sqlite_master WHERE type='table';") tables = [row[0] for row in cursor.fetchall()] return tables def count_entries(conn, table_name): """Gibt die Anzahl der Einträge in der angegebenen Tabelle zurück.""" cursor = conn.cursor() try: cursor.execute(f"SELECT COUNT(*) FROM {table_name}") count = cursor.fetchone()[0] except Exception as e: count = None print(f"Fehler beim Zählen der Einträge in {table_name}: {e}") return count def print_table_contents(conn, table_name): """Gibt den kompletten Inhalt der angegebenen Tabelle aus.""" cursor = conn.cursor() try: cursor.execute(f"SELECT * FROM {table_name}") except Exception as e: print(f"Fehler beim Abrufen der Inhalte von {table_name}: {e}") return # Spaltennamen abrufen column_names = [desc[0] for desc in cursor.description] print("Spalten:", column_names) rows = cursor.fetchall() for row in rows: print(row) def main(): # Parameter auswerten: # Standard: Nur Tabellenliste mit Eintragszahl # Wenn "detail" angegeben wurde, sollen auch die Inhalte ausgegeben werden. # Wird "detail " angegeben, dann nur für die angegebene Tabelle. detail = False specific_table = None if len(sys.argv) > 1: if sys.argv[1].lower() == "detail": detail = True if len(sys.argv) > 2: specific_table = sys.argv[2] # Verbindung zur Datenbank herstellen conn = sqlite3.connect("bundles.db") tables = list_tables(conn) if not tables: print("Die Datenbank enthält keine Tabellen.") return print("Tabellen in der Datenbank:") for table in tables: # Falls ein spezifischer Tabellename angegeben wurde, überspringe alle anderen if specific_table and table.lower() != specific_table.lower(): continue count = count_entries(conn, table) count_str = f"{count} Einträge" if count is not None else "unbekannte Einträge" print(f" - {table}: {count_str}") if detail: print(f" Inhalt der Tabelle {table}:") print_table_contents(conn, table) print("-" * 40) conn.close() if __name__ == "__main__": main()