verwende sqlite um mir Messdaten wegzuspeichern.
Dazu habe ich eine Tabelle mit:
(path TEXT, filename TEXT, mode TEXT, value REAL)
Nun möchte ich alle Einträge löschen die path = path haben und deren filename nicht in der Liste Filenames vorkommen.
Dazu versuche ich dies hier:
Code: Alles auswählen
path = blaha
if len(filenames) == 0:
sql = "DELETE FROM data WHERE path=?"
con.execute(sql, (path,))
else:
sql = "DELETE FROM data WHERE path=? AND NOT filename IN (" + "?," * (len(filenames) -1 ) + "?)"
args = (path, filenames)
con.execute(sql, args)
Zur Motivation:
Meine Messwerte liegen als einzelne csv Dateien vor, die eine ganze Waveform darstellen. Aus jeder Waveform extrahiere ich einen Datenpunkt.
Diesen möchte ich in einer DB zwischen speichern. Wird die csv-Datei verschoben oder entfernt soll er die Daten aus der DB löschen.
Deshalb gehe ich mit os.walk durch die Verzeichnisse und sehe nach welche Dateien noch da sind und welche nicht.
Dann entferne ich alle Daten in der DB die keine csv-Datei mehr haben.