Ini tidak sepenuhnya mengejutkan. Pada contoh pertama, Anda memasukkan konstanta python yang telah ditentukan sebelumnya Tidak ada
Itu sama dengan SQL NULL
. Dalam contoh kedua Anda memasukkan String yang disebut 'Tidak Ada' ke dalam tabel. Kedua hal ini sangat berbeda. Jika Anda memasukkan string ke dalam bidang ganda atau float, Anda akan melihat semua jenis kesalahan, paling sering, kesalahan yang pernah Anda lihat.
pada contoh pertama berfungsi karena Anda telah menyatakan :
`float8value` double DEFAULT NULL,
Ini menerima NULL dan None berada di tempat ke-8 dalam daftar nilai Anda. Saat banyak parameter berbeda digunakan, sebaiknya gunakan parameter bernama sehingga jelas secara sekilas apa yang terikat pada setiap kolom.
Pembaruan:
Setelah menjalankan kode Anda, satu-satunya kesimpulan yang dapat dicapai adalah Anda telah menemukan bug, dengan menggunakan print(cursor.statement)
mungkin untuk menemukan bahwa kueri yang dieksekusi adalah.
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')
Ini tidak menghasilkan kesalahan, tetapi jika Anda menghapus kumpulan nilai pertama, kesalahan memang terjadi. Rekomendasi saya adalah mengajukan laporan bug