これは完全に驚くべきことではありません。最初の例では、Pythonの事前定義された定数なし を挿入しています。
これはSQLNULL
に相当します 。 2番目の例では、「None」という文字列をテーブルに挿入しています。これら2つは非常に異なります。文字列をdoubleフィールドまたはfloatフィールドに挿入すると、あらゆる種類のエラーが表示されます。ほとんどの場合、表示されたエラーとまったく同じです。
最初に、宣言したので機能します:
`float8value` double DEFAULT NULL,
これはNULLを受け入れ、Noneは値リストの8番目にあります。多くの異なるパラメーターが使用されている場合は、各列に何がバインドされているかが一目でわかるように、名前付きパラメーターを使用することをお勧めします。
更新:
コードを実行した後、到達できる唯一の結論は、print(cursor.statement)
を使用してバグを見つけたということです。 実行されたクエリがであることがわかります。
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')
これによってエラーが発生することはありませんが、最初の値のセットを消去すると、実際にエラーが発生します。バグレポートを提出することをお勧めします