clean_db_entries
This commit is contained in:
parent
8bf95b4f38
commit
b7c3b58157
|
|
@ -77,6 +77,51 @@ def clean_debug_directories():
|
||||||
|
|
||||||
logger.info("Bereinigung der Debug-Verzeichnisse abgeschlossen.")
|
logger.info("Bereinigung der Debug-Verzeichnisse abgeschlossen.")
|
||||||
|
|
||||||
|
def clean_db_entries():
|
||||||
|
"""
|
||||||
|
Löscht alle Einträge aus der Deck-Tabelle, für die es kein entsprechendes Verzeichnis unter 'debug_images' gibt.
|
||||||
|
"""
|
||||||
|
debug_base_dir = 'debug_images'
|
||||||
|
if not os.path.exists(debug_base_dir):
|
||||||
|
logger.info(f"Debug-Verzeichnis '{debug_base_dir}' existiert nicht. Keine DB-Einträge zu bereinigen.")
|
||||||
|
return
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Liste der vorhandenen Verzeichnisse unter 'debug_images'
|
||||||
|
existing_dirs = {name for name in os.listdir(debug_base_dir)
|
||||||
|
if os.path.isdir(os.path.join(debug_base_dir, name))}
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Fehler beim Zugriff auf Verzeichnisse in '{debug_base_dir}': {e}")
|
||||||
|
return
|
||||||
|
|
||||||
|
try:
|
||||||
|
conn = get_db_connection()
|
||||||
|
conn.row_factory = sqlite3.Row
|
||||||
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
# Alle bildid-Werte aus der Deck-Tabelle abrufen, die nicht NULL sind
|
||||||
|
cursor.execute('SELECT DISTINCT bildid FROM Deck WHERE bildid IS NOT NULL')
|
||||||
|
bildids = {row['bildid'] for row in cursor.fetchall()}
|
||||||
|
|
||||||
|
# bildid-Werte identifizieren, für die es kein Verzeichnis gibt
|
||||||
|
missing_dirs = bildids - existing_dirs
|
||||||
|
|
||||||
|
if missing_dirs:
|
||||||
|
# Einträge aus der Deck-Tabelle löschen, deren bildid keinen entsprechenden Ordner hat
|
||||||
|
placeholders = ','.join('?' for _ in missing_dirs)
|
||||||
|
sql = f'DELETE FROM Deck WHERE bildid IN ({placeholders})'
|
||||||
|
cursor.execute(sql, tuple(missing_dirs))
|
||||||
|
deleted_count = cursor.rowcount
|
||||||
|
conn.commit()
|
||||||
|
logger.info(f"{deleted_count} Einträge aus der Deck-Tabelle gelöscht, deren 'bildid'-Verzeichnisse fehlen.")
|
||||||
|
else:
|
||||||
|
logger.info("Keine DB-Einträge zu löschen; alle 'bildid'-Verzeichnisse existieren.")
|
||||||
|
|
||||||
|
conn.close()
|
||||||
|
except sqlite3.Error as e:
|
||||||
|
logger.error(f"Datenbankfehler beim Löschen von Einträgen aus der Deck-Tabelle: {e}")
|
||||||
|
return
|
||||||
|
|
||||||
# ------
|
# ------
|
||||||
# Endpoints
|
# Endpoints
|
||||||
# ------
|
# ------
|
||||||
|
|
@ -328,3 +373,4 @@ def delete_images_by_bildid(bildid):
|
||||||
if not os.path.exists(DATABASE):
|
if not os.path.exists(DATABASE):
|
||||||
init_db()
|
init_db()
|
||||||
clean_debug_directories()
|
clean_debug_directories()
|
||||||
|
clean_db_entries()
|
||||||
Loading…
Reference in New Issue