sql >> Databáze >  >> RDS >> Mysql

Před vložením zkontrolujte mysql v Pythonu na duplikát

Buď můžete zjistit, zda tam je jako první, pomocí SELECT pomocí url , nebo můžete vytvořit url jedinečné pole:

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

To zabrání MySQL ve vkládání duplicitního řádku, ale také ohlásí chybu, když se pokusíte vložit. To není dobré – i když chybu zvládneme, ostatní to může zamaskovat. Abychom to obešli, používáme ON DUPLICATE KEY UPDATE syntaxe:

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

To nám umožňuje poskytnout UPDATE v případě duplicitní hodnoty v jedinečném poli (může zahrnovat váš primární klíč). V tomto případě budeme pravděpodobně chtít aktualizovat modified_date pole s aktuálním datem.

UPRAVIT: Jak navrhuje ~unutbu , pokud nechcete na duplikátu nic měnit, můžete použít INSERT IGNORE syntax. Funguje to jednoduše následovně:

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

To jednoduše změní určité druhy chyb na varování – nejužitečnější je chyba, která uvádí, že se jedná o duplicitní jedinečný záznam. Pokud umístíte klíčové slovo IGNORE do vašeho výpisu, nedostanete chybu – dotaz bude jednoduše vynechán. Ve složitých dotazech to může také skrýt další chyby, které by však mohly být užitečné, takže je nejlepší se dvakrát ujistit, že je váš kód správný, pokud jej chcete použít.




  1. MYSQl Optimalizujte tabulku blogových příspěvků s komentáři

  2. Dilema pojmenování tabulek:Jednotné vs. množné číslo

  3. SQL:Řetězení spojuje efektivitu

  4. Převést „datetime2“ na „čas“ v SQL Server (příklady T-SQL)