Mysql
 sql >> Database >  >> RDS >> Mysql

Inserimento di un valore NULL in un tipo di dati doppio MySQL Python

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