78 lines
2.5 KiB
Python
78 lines
2.5 KiB
Python
#!/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 <tablename>" 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()
|