Mysql
 sql >> Base de données >  >> RDS >> Mysql

Insertion de la valeur NULL dans un type de données double MySQL Python

Ce n'est pas tout à fait surprenant. Dans la première instance, vous insérez la constante prédéfinie python Aucune

Cela équivaut à SQL NULL . Dans la deuxième instance, vous insérez une chaîne appelée "None" dans la table. Ces deux-là sont très différents. Si vous insérez une chaîne dans un champ double ou flottant, vous verrez toutes sortes d'erreurs, le plus souvent, celle que vous avez vue.

dans un premier temps ça marche car vous avez déclaré :

 `float8value` double DEFAULT NULL,

Ceci accepte NULL et None est à la 8ème place dans votre liste de valeurs. Lorsque de nombreux paramètres différents sont utilisés, c'est toujours une bonne idée d'utiliser des paramètres nommés afin qu'il soit évident en un coup d'œil ce qui est lié à chaque colonne.

Mises à jour :

Après avoir exécuté votre code, la seule conclusion qui peut être tirée est que vous avez trouvé un bogue, en utilisant print(cursor.statement) il est possible de découvrir que la requête exécutée est.

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')

Cela ne produit pas d'erreur, mais si vous effacez le premier ensemble de valeurs, l'erreur est effectivement produite. Ma recommandation est de déposer un rapport de bogue