Điều này không hoàn toàn đáng ngạc nhiên. Trong trường hợp đầu tiên, bạn đang chèn hằng số xác định trước của python Không có
Điều đó tương đương với SQL NULL
. Trong trường hợp thứ hai, bạn đang chèn một Chuỗi có tên là 'Không có' vào bảng. Hai cái này rất khác nhau. Nếu bạn chèn một chuỗi vào trường kép hoặc trường float, bạn sẽ thấy tất cả các loại lỗi, thường xuyên nhất là lỗi chính xác mà bạn đã thấy.
trong trường hợp đầu tiên, nó hoạt động vì bạn đã khai báo:
`float8value` double DEFAULT NULL,
Điều này chấp nhận NULL và Không có ở vị trí thứ 8 trong danh sách giá trị của bạn. Khi nhiều tham số khác nhau đang được sử dụng, bạn nên sử dụng các tham số được đặt tên để có thể thấy rõ những gì đang được liên kết với mỗi cột.
Cập nhật:
Sau khi chạy mã của bạn, kết luận duy nhất có thể đạt được là bạn đã tìm thấy lỗi, bằng cách sử dụng print(cursor.statement)
có thể phát hiện ra rằng truy vấn được thực thi là.
INSERT INTO runsettings (apcrunid,equipment,runnumber,wafer,settingname,intvalue,floatvalue,float8value)
VALUES (471285,'CT19',7,'271042','Etch Time Min',NULL,NULL,NULL),
(471285,'CT19',7,'00000','Etch Time Min',NULL,NULL,'None')
Điều này không tạo ra lỗi, nhưng nếu bạn xóa bộ giá trị đầu tiên thì lỗi thực sự được tạo ra. Khuyến nghị của tôi là gửi báo cáo lỗi