Python mysql-check für doppelte before insert
hier ist die Tabelle
CREATE TABLE IF NOT EXISTS kompas_url
(
id BIGINT(20) NOT NULL AUTO_INCREMENT,
url VARCHAR(1000),
created_date datetime,
modified_date datetime,
PRIMARY KEY(id)
)
Ich versuche zu tun, LEGEN Sie zu kompas_url Tabelle nur, wenn url nicht vorhanden ist
irgendeine Idee?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie entweder finden Sie heraus, ob es in der es zunächst durch
SELECT
ing vonurl
oder Sie können dieurl
Feld einzigartig:Dies wird stop MySQL einfügen ein Duplikat der Zeile, aber es meldet auch einen Fehler, wenn Sie versuchen, einfügen. Das ist gar nicht gut—obwohl wir können den Fehler so behandeln, es könnte zu verschleiern andere. Um dies zu umgehen, verwenden wir die
ON DUPLICATE KEY UPDATE
syntax:Dies ermöglicht es uns, eine
UPDATE
- Anweisung im Falle eines doppelten Wert in einem eindeutigen Feld (dazu kann auch Primärschlüssel). In diesem Fall werden wir Sie wahrscheinlich wollen, aktualisieren Sie diemodified_date
Feld mit dem aktuellen Datum.EDIT: Wie vorgeschlagen von ~unutbu, wenn Sie nicht wollen, etwas zu ändern auf ein Duplikat, können Sie die
INSERT IGNORE
syntax. Dies funktioniert einfach wie folgt:Dieser dreht einfach bestimmte Arten von Fehlern in Warnungen—die meisten sinnvoll, den Fehler, die besagt, es wird ein doppelter Eintrag eindeutig ist. Wenn Sie das Schlüsselwort
IGNORE
in Ihrer Erklärung, die Sie nicht bekommen eine Fehler—die Abfrage wird einfach fallen gelassen werden. In komplexen Abfragen, dies kann auch blenden Sie die anderen Fehler, die nützlich sein könnten aber so ist es am besten zu machen doppelt sicher, dass Ihr code korrekt ist, wenn Sie es verwenden möchten.INSERT IGNORE
, die einfach nur ignorieren Sie die insert-Anweisung, wenn die insertion führt zu einem Duplikat eines eindeutigen Schlüssels.INSERT IGNORE
würde, wäre das für mich in Ordnung.