Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tidak dapat menambahkan kolom dari bingkai data panda ke mysql dengan python

Anda tidak dapat menambahkan kolom ke tabel Anda dengan data di dalamnya semua dalam satu langkah. Anda harus menggunakan setidaknya dua pernyataan terpisah untuk melakukan DDL terlebih dahulu (ALTER TABLE ) dan detik DML (UPDATE atau INSERT ... ON DUPLICATE KEY UPDATE ).

Ini berarti menambahkan kolom dengan NOT NULL kendala memerlukan tiga langkah:

  1. Tambahkan kolom nullable
  2. Mengisi kolom dengan nilai di setiap baris
  3. Tambahkan NOT NULL kendala pada kolom

Atau, dengan menggunakan nilai default "dummy", Anda dapat melakukannya dalam dua langkah (berhati-hatilah untuk tidak membiarkan nilai "dummy" mengambang, atau gunakan nilai yang bermakna/terdokumentasi dengan baik):

  1. Tambahkan kolom sebagai NOT NULL DEFAULT '' (atau gunakan mis. 0 untuk tipe numerik)
  2. Mengisi kolom dengan nilai di setiap baris

Anda juga dapat mengubah tabel lagi untuk menghapus DEFAULT nilai. Secara pribadi, saya lebih suka metode pertama karena tidak memasukkan nilai-nilai yang tidak berarti ke dalam tabel Anda dan kemungkinan besar akan menimbulkan kesalahan jika langkah kedua bermasalah. Saya mungkin gunakan metode kedua ketika kolom cocok untuk DEFAULT alami tertentu value dan saya berencana untuk menyimpannya dalam definisi tabel final.

Selain itu, Anda tidak membuat parameter kueri dengan benar; anda harus meneruskan nilai parameter ke metode daripada memformat argumen string di dalam pemanggilan metode. Dengan kata lain:

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. Pemantauan Kemajuan Permintaan Panjang MySQL

  2. MySQL InnoDB Pencarian teks lengkap yang berisi alamat email

  3. Tidak dapat mengambil metadata proyek. Pastikan ini adalah proyek .NET Core berbasis MSBuild

  4. Menggunakan bidang virtual di cakePHP 2.x

  5. Membandingkan Oracle MySQL, Percona Server dan MariaDB