Doppelwerte in Tabelle verhindern
Verfasst: Mittwoch 5. August 2009, 18:03
Ich benutze Python 2.5 und Mysql(aktuelle Version) zum Anlegen einer Wasserwert-Datenbanktabelle.
Dabei werden csv-Files mit Timestamps und den entsprechenden Wasserwerten (pH-Wert, Nitrit usw) "angeliefert" und durch ein Python-Skript eingepflegt.
So weit so gut. Nur kann es vorkommen, dass ich z.B. eine Datei erhalte, die meinetwegen Daten einer bestimmten Woche enthält. Am Ende des Jahres bekomme ich dann eine csv-Datei mit allen aufgezeichneten Werten. Nun will ich aber doppelte Werte vermeiden, da ja in der Jahres-csv-Datei diese 1 Woche schon vorher eingepflegt wurde.
Nun kann ich durch
ALTER IGNORE TABLE qual ADD UNIQUE INDEX(`Id`,`UnixTimestamp`)
verhindern, dass Doppelwerte reinkommen, aber das Problem ist nun:
Wenn versucht wird, einen Wert einzutragen, der schon in der Tabelle vorhanden ist , wirft mir MySQL natürlich einen
_mysql_exceptions.IntegrityError, der sieht dann z.B. so aus: (1062, "Duplicate entry '91-1167720000' for key Id_2'")
und mein Python-Skript terminiert dann.
Wie verhindere ich einerseits, dass Doppelwerte in der Tabelle stehen und andererseits die MySQL-Exception abgefangen wird und die restlichen Werte, die noch nicht in der Tabelle sind, dort hineingeschreiben werden?
Bin für jede Hilfe dankbar
Dabei werden csv-Files mit Timestamps und den entsprechenden Wasserwerten (pH-Wert, Nitrit usw) "angeliefert" und durch ein Python-Skript eingepflegt.
So weit so gut. Nur kann es vorkommen, dass ich z.B. eine Datei erhalte, die meinetwegen Daten einer bestimmten Woche enthält. Am Ende des Jahres bekomme ich dann eine csv-Datei mit allen aufgezeichneten Werten. Nun will ich aber doppelte Werte vermeiden, da ja in der Jahres-csv-Datei diese 1 Woche schon vorher eingepflegt wurde.
Nun kann ich durch
ALTER IGNORE TABLE qual ADD UNIQUE INDEX(`Id`,`UnixTimestamp`)
verhindern, dass Doppelwerte reinkommen, aber das Problem ist nun:
Wenn versucht wird, einen Wert einzutragen, der schon in der Tabelle vorhanden ist , wirft mir MySQL natürlich einen
_mysql_exceptions.IntegrityError, der sieht dann z.B. so aus: (1062, "Duplicate entry '91-1167720000' for key Id_2'")
und mein Python-Skript terminiert dann.
Wie verhindere ich einerseits, dass Doppelwerte in der Tabelle stehen und andererseits die MySQL-Exception abgefangen wird und die restlichen Werte, die noch nicht in der Tabelle sind, dort hineingeschreiben werden?
Bin für jede Hilfe dankbar