Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Không thể thêm cột từ khung dữ liệu gấu trúc vào mysql trong python

Bạn không thể thêm một cột vào bảng của mình với toàn bộ dữ liệu trong một bước. Bạn phải sử dụng ít nhất hai câu lệnh riêng biệt để thực hiện DDL trước (ALTER TABLE ) và DML thứ hai (UPDATE hoặc INSERT ... ON DUPLICATE KEY UPDATE ).

Điều này có nghĩa là để thêm một cột có NOT NULL ràng buộc yêu cầu ba bước:

  1. Thêm cột vô hiệu
  2. Điền vào cột với các giá trị trong mỗi hàng
  3. Thêm NOT NULL ràng buộc vào cột

Ngoài ra, bằng cách sử dụng giá trị mặc định "giả", bạn có thể thực hiện theo hai bước (chỉ cần lưu ý không để bất kỳ giá trị "giả" nào trôi nổi hoặc sử dụng các giá trị có ý nghĩa / được ghi chép đầy đủ):

  1. Thêm cột dưới dạng NOT NULL DEFAULT '' (hoặc sử dụng ví dụ:0 cho các kiểu số)
  2. Điền vào cột với các giá trị trong mỗi hàng

Bạn có thể tùy chọn thay đổi lại bảng để xóa DEFAULT giá trị. Cá nhân tôi thích phương pháp đầu tiên hơn vì nó không đưa các giá trị vô nghĩa vào bảng của bạn và có nhiều khả năng xảy ra lỗi nếu bước thứ hai có vấn đề. Tôi có thể đi với phương thức thứ hai khi một cột tự cho mình một DEFAULT tự nhiên nhất định và tôi dự định giữ giá trị đó trong định nghĩa bảng cuối cùng.

Ngoài ra, bạn không tham số hóa chính xác truy vấn của mình; bạn nên chuyển các giá trị tham số cho phương thức thay vì định dạng đối số chuỗi bên trong lời gọi phương thức. Nói cách khác:

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. Kết nối với DB bằng Lớp PHP không hoạt động khi cố gắng truy xuất kết quả

  2. MySQL:phạm vi ngày trong tuần từ số tuần trong một truy vấn

  3. docker cam kết mysql không lưu

  4. Làm cách nào để thoát ký hiệu phần trăm theo nghĩa đen khi tùy chọn NO_BACKSLASH_ESCAPES được bật?

  5. sửa đổi int thành float (mysql)