Questo non è del tutto sorprendente. Nella prima istanza stai inserendo la costante predefinita di Python Nessuno
Ciò equivale a SQL NULL
. Nella seconda istanza stai inserendo una stringa chiamata 'Nessuno' nella tabella. Questi due sono molto diversi. Se inserisci una stringa in un campo double o float vedrai tutti i tipi di errori, molto spesso quello esatto che hai visto.
in prima istanza funziona perché hai dichiarato :
`float8value` double DEFAULT NULL,
Questo accetta NULL e Nessuno è all'ottavo posto nell'elenco dei valori. Quando vengono utilizzati molti parametri diversi, è sempre una buona idea utilizzare parametri denominati in modo che sia ovvio a colpo d'occhio cosa viene associato a ciascuna colonna.
Aggiornamenti:
Dopo aver eseguito il codice, l'unica conclusione che si può raggiungere è che hai trovato un bug, utilizzando print(cursor.statement)
è possibile scoprire che la query eseguita è.
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')
Questo non produce un errore, ma se si cancella il primo set di valori l'errore viene effettivamente prodotto. La mia raccomandazione è di presentare una segnalazione di bug