Hallo allerseits,
ich befasse mich erstmals mit der Verwendung von Datenbanken - konkret sqlite3 - in Python. Sorry, wenn die Frage zu banal sein sollte...
Ich möchte den Inhalt einer verschachtelten Liste in eine Tabelle einer sqlite3-DB importieren. Format der Listen:
[('bla', 'blubb', 'IP-Adresse', 'Kommentar'), ('bla', 'blubb', 'nächste IP-Adresse', 'Kommentar'),...]
Die Felder bla und blubb brauche ich nicht in der Datenbank. Die IP-Adresse soll nur einmal in der Datenbank vorhanden sein. Das heißt, wenn die IP-Adresse schon mal in die DB geschrieben wurde, soll sie nicht mehr importiert werden.
Aktuell denke ich darüber nach, die Tabelle auszulesen (das Feld mit der IP-Adresse genügt ja), und dann jeden zu importierenden Eintrag gegen die Liste mit den ausgelesenen Adressen zu prüfen. Ist er nicht enthalten, werden IP-Adresse und Kommentar in die DB geschrieben.
Geht das vielleicht auch einfacher?
Danke.
VG mhard666
sqlite INSERT nur wenn Eintrag in Tabelle noch nicht existiert
Du hast keine verschachtelte Liste, sondern eine Liste mit Tuple (was ja auch ganz passend ist).
Datenbanken kennen unique-constraints (https://www.sqlite.org/lang_createtable ... onstraints) um zu verhindern, dass mehrere Einträge mit gleichem Inhalt geschrieben werden können. Das mußt Du also nicht selbst implementieren.
Datenbanken kennen unique-constraints (https://www.sqlite.org/lang_createtable ... onstraints) um zu verhindern, dass mehrere Einträge mit gleichem Inhalt geschrieben werden können. Das mußt Du also nicht selbst implementieren.
Hallo Sirius3,
hat funktioniert (wenn man das richtige SQL-Statement weiß):
Danke.
VG mhard666
hat funktioniert (wenn man das richtige SQL-Statement weiß):
Code: Alles auswählen
cursor.execute("""
INSERT OR IGNORE INTO ip_addresses (str_address, comment)
VALUES (?,?)
""",
(address, comment)
)
VG mhard666