Isso não é totalmente surpreendente. Na primeira instância, você está inserindo a constante predefinida do python Nenhum
Isso equivale a SQL
NULL
. Na segunda instância você está inserindo uma String chamada 'None' na tabela. Esses dois são muito diferentes. Se você inserir uma string em um campo double ou float, verá todos os tipos de erros, na maioria das vezes, o exato que você viu. na primeira instância, funciona porque você declarou:
`float8value` double DEFAULT NULL,
Isso aceita NULL e Nenhum está em 8º lugar na sua lista de valores. Quando muitos parâmetros diferentes estão sendo usados, é sempre uma boa ideia usar parâmetros nomeados para que seja óbvio de relance o que está sendo vinculado a cada coluna.
Atualizações:
Depois de executar seu código, a única conclusão que pode ser alcançada é que você encontrou um bug, usando
print(cursor.statement)
é possível descobrir que a consulta executada é. 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')
Isso não produz um erro, mas se você apagar o primeiro conjunto de valores, o erro será realmente produzido. Minha recomendação é registrar um relatório de bug