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

Nie można dodać kolumny z ramki danych pandy do mysql w pythonie

Nie możesz dodać do tabeli kolumny zawierającej wszystkie dane w jednym kroku. Aby najpierw wykonać DDL, musisz użyć co najmniej dwóch oddzielnych instrukcji (ALTER TABLE ) i drugi DML (UPDATE lub INSERT ... ON DUPLICATE KEY UPDATE ).

Oznacza to, że aby dodać kolumnę z NOT NULL ograniczenie wymaga trzech kroków:

  1. Dodaj kolumnę dopuszczającą wartość null
  2. Wypełnij kolumnę wartościami w każdym wierszu
  3. Dodaj NOT NULL ograniczenie do kolumny

Alternatywnie, używając „fikcyjnej” wartości domyślnej, możesz to zrobić w dwóch krokach (należy uważać, aby nie pozostawić żadnych „fałszywych” wartości lub użyć wartości, które są znaczące/dobrze udokumentowane):

  1. Dodaj kolumnę jako NOT NULL DEFAULT '' (lub użyj np. 0 dla typów numerycznych)
  2. Wypełnij kolumnę wartościami w każdym wierszu

Możesz opcjonalnie zmienić tabelę ponownie, aby usunąć DEFAULT wartość. Osobiście wolę pierwszą metodę, ponieważ nie wprowadza ona do tabeli bezsensownych wartości i jest bardziej prawdopodobne, że wyrzuci błąd, jeśli drugi krok ma problem. mogę idź z drugą metodą, gdy kolumna nadaje się do pewnego naturalnego DEFAULT wartość i planuję zachować ją w definicji stołu finałowego.

Ponadto nie parametryzujesz poprawnie swojej kwerendy; powinieneś przekazać wartości parametrów do metody zamiast formatowania argumentu ciągu wewnątrz wywołania metody. Innymi słowy:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przypisanie identyfikatora użytkownika php nie działa

  2. Przeanalizuj CSV i wyeksportuj do bazy danych Mysql w Grails

  3. prawidłowy sposób wstawiania danych o id jako auto-inkrementacji w mysqli

  4. php mysqli_connect:metoda uwierzytelniania nieznana klientowi [caching_sha2_password]

  5. Uzyskaj najczęstsze wartości dla wszystkich kolumn