Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Python mysql sprawdza, czy nie ma duplikatów przed wstawieniem

Możesz najpierw dowiedzieć się, czy jest tam, przez SELECT ing przez url lub możesz utworzyć url pole unikalne:

CREATE TABLE IF NOT EXISTS kompas_url
    ...
    url VARCHAR(1000) UNIQUE,
    ...
)

To powstrzyma MySQL przed wstawieniem zduplikowanego wiersza, ale zgłosi również błąd podczas próby wstawienia. To nie jest dobre — chociaż możemy poradzić sobie z błędem, może to zamaskować innych. Aby obejść ten problem, używamy ON DUPLICATE KEY UPDATE składnia:

INSERT INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
ON DUPLICATE KEY UPDATE modified_date = NOW()

To pozwala nam zapewnić UPDATE oświadczenie w przypadku zduplikowanej wartości w unikalnym polu (może to obejmować Twój klucz podstawowy). W tym przypadku prawdopodobnie chcemy zaktualizować modified_date pole z bieżącą datą.

EDYTUJ: Zgodnie z sugestią ~unutbu , jeśli nie chcesz niczego zmieniać w duplikacie, możesz użyć INSERT IGNORE składnia. Działa to po prostu w następujący sposób:

INSERT IGNORE INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())

To po prostu zamienia pewne rodzaje błędów w ostrzeżenia — najbardziej przydatne jest błąd, który stwierdza, że ​​będzie zduplikowany unikalny wpis. Jeśli umieścisz słowo kluczowe IGNORE w swoim oświadczeniu nie pojawi się błąd — zapytanie zostanie po prostu usunięte. W złożonych zapytaniach może to również ukryć inne błędy, które mogą być przydatne, więc najlepiej jest podwójnie upewnić się, że kod jest poprawny, jeśli chcesz go użyć.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. usuń z bazy danych po zamknięciu przeglądarki

  2. Jak wykonać kopię zapasową zaszyfrowanej bazy danych za pomocą serwera Percona Server dla MySQL 8.0?

  3. Funkcja MySQL ASIN() – zwraca łuk sinus liczby

  4. Jak sprawdzić, czy ciąg jest poprawną DATĄ, CZASEM lub DATETIME?

  5. Zapisz pliki CSV w bazie danych mysql