Detta är inte helt förvånande. I första hand infogar du den fördefinierade pythonkonstanten Ingen
Det motsvarar SQL NULL
. I det andra fallet infogar du en sträng som heter 'Ingen' i tabellen. Dessa två är väldigt olika. Om du infogar en sträng i ett dubbelt eller flytande fält kommer du att se alla typer av fel, oftast exakt det du har sett.
i första hand fungerar det eftersom du har deklarerat :
`float8value` double DEFAULT NULL,
Detta accepterar NULL och None är på 8:e plats i din värdelista. När många olika parametrar används är det alltid en bra idé att använda namngivna parametrar så att det är uppenbart med en blick vad som binds till varje kolumn.
Uppdateringar:
Efter att ha kört din kod är den enda slutsatsen som kan nås att du har hittat en bugg genom att använda print(cursor.statement)
det är möjligt att upptäcka att den körda frågan är.
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')
Detta ger inget fel, men om du raderar den första uppsättningen värden skapas verkligen felet. Min rekommendation är att göra en felrapport