sql >> Database >  >> RDS >> Mysql

Kan geen kolom van een panda-gegevensframe toevoegen aan mysql in python

U kunt niet in één stap een kolom met gegevens erin aan uw tabel toevoegen. U moet ten minste twee afzonderlijke instructies gebruiken om de DDL eerst uit te voeren (ALTER TABLE ) en de DML-seconde (UPDATE of INSERT ... ON DUPLICATE KEY UPDATE ).

Dit betekent dat om een ​​kolom toe te voegen met een NOT NULL beperking vereist drie stappen:

  1. Kolom met nulling toevoegen
  2. Kolom vullen met waarden in elke rij
  3. Voeg de NOT NULL . toe beperking tot de kolom

Als alternatief kunt u door een "dummy"-standaardwaarde te gebruiken, dit in twee stappen doen (pas op dat u geen "dummy"-waarden laat rondzweven, of gebruik waarden die zinvol/goed gedocumenteerd zijn):

  1. Kolom toevoegen als NOT NULL DEFAULT '' (of gebruik bijvoorbeeld 0 voor numerieke typen)
  2. Kolom vullen met waarden in elke rij

U kunt de tabel optioneel opnieuw wijzigen om de DEFAULT . te verwijderen waarde. Persoonlijk geef ik de voorkeur aan de eerste methode omdat deze geen betekenisloze waarden in uw tabel introduceert en de kans groter is dat er een fout optreedt als de tweede stap een probleem heeft. Ik misschien ga met de tweede methode als een kolom zich leent voor een bepaalde natuurlijke DEFAULT waarde en ik ben van plan om dat in de definitie van de finaletafel te houden.

Bovendien parametreert u uw query niet correct; u moet de parameterwaarden doorgeven aan de methode in plaats van het stringargument binnen de methodeaanroep op te maken. Met andere woorden:

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



  1. Elementen retourneren van een JSON-array in MariaDB

  2. Selecteer rijen totdat een totaalbedrag is bereikt in een kolom (mysql)

  3. Voeg meerdere velden samen tot één met SQL

  4. Converteer efficiënt rijen naar kolommen in de sql-server