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

Nelze přidat sloupec z datového rámce pandas do mysql v pythonu

Do tabulky nemůžete přidat sloupec s daty v jednom kroku. K provedení DDL musíte nejprve použít alespoň dva samostatné příkazy (ALTER TABLE ) a sekundu DML (UPDATE nebo INSERT ... ON DUPLICATE KEY UPDATE ).

To znamená, že chcete přidat sloupec s NOT NULL omezení vyžaduje tři kroky:

  1. Přidat sloupec s možnou hodnotou Null
  2. Vyplňte sloupec hodnotami v každém řádku
  3. Přidejte NOT NULL omezení na sloupec

Alternativně pomocí „fiktivní“ výchozí hodnoty to můžete provést ve dvou krocích (jen si dejte pozor, abyste nenechali žádné „fiktivní“ hodnoty volně plovoucí, nebo použili hodnoty, které jsou smysluplné/dobře zdokumentované):

  1. Přidat sloupec jako NOT NULL DEFAULT '' (nebo použijte např. 0 pro číselné typy)
  2. Vyplňte sloupec hodnotami v každém řádku

Volitelně můžete tabulku znovu upravit a odstranit DEFAULT hodnota. Osobně preferuji první metodu, protože do vaší tabulky nezavádí nesmyslné hodnoty a je pravděpodobnější, že vyvolá chybu, pokud má druhý krok problém. Mohl bych použijte druhou metodu, když se sloupec hodí k určitému přirozenému DEFAULT hodnotu a plánuji ji ponechat v definici konečné tabulky.

Navíc není parametrizace dotazu správně; měli byste předat metodě hodnoty parametrů spíše než formátování argumentu řetězce uvnitř volání metody. Jinými slovy:

cursor.execute("Query with %s, %s, ...", iterable_with_values)  # Do this!
cursor.execute("Query with %s, %s, ..." % iterable_with_values)  # NOT this!



  1. Nelegální kombinace porovnávání pro operaci „concat“

  2. Jaké dovednosti a znalosti potřebují návrháři databází?

  3. Proč je zálohování dat pro vaši organizaci důležité

  4. Udržování pořádku v dotazu MySQL IN