To není úplně překvapivé. V prvním případě vkládáte předdefinovanou konstantu pythonu Žádné
To se rovná SQL NULL
. Ve druhém případě vkládáte do tabulky řetězec s názvem 'None'. Tito dva jsou velmi odlišní. Pokud vložíte řetězec do dvojitého nebo plovoucího pole, uvidíte všechny druhy chyb, nejčastěji přesně tu, kterou jste viděli.
v prvním případě to funguje, protože jste deklarovali :
`float8value` double DEFAULT NULL,
To přijímá NULL a None je na 8. místě ve vašem seznamu hodnot. Když se používá mnoho různých parametrů, je vždy dobré použít pojmenované parametry, aby bylo na první pohled zřejmé, co je s každým sloupcem vázáno.
Aktualizace:
Po spuštění kódu lze dospět k jedinému závěru, že jste našli chybu pomocí print(cursor.statement)
je možné zjistit, že provedený dotaz je.
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')
To nezpůsobí chybu, ale pokud vymažete první sadu hodnot, chyba skutečně vznikne. Moje doporučení je podat hlášení o chybě