2017-08-18 13 views
0

私は、NULL、浮動小数点数および時折のNanを含むいくつかのデータを持っています。私はこのデータをPythonとMySqldbを使ってMySQLデータベースに挿入しようとしています。MySQLデータベースにNaN値を挿入する

ここで挿入文です:

for row in zip(currents, voltages): 
     row = [id] + list(row) 
     for item in row: 
      sql_insert = ('INSERT INTO result(id, current, voltage)' 
          'VALUES(%s, "%s")') 
      cursor.execute(sql_insert, row) 

これはテーブルです:私は、テーブルにはNaNを挿入しようとすると

CREATE TABLE langmuir_result (result_id INT auto_increment, 
           id INT, 
           current FLOAT, 
           voltage FLOAT, 
           PRIMARY KEY (result_id)); 

は、私はこのエラーを取得する:

_mysql_exceptions.DataError: (1265, "Data truncated for column 'current' at row 1") 

私はNaN値を浮動小数点数または文字列またはNULLではなく数値としてデータベースに挿入します。私は列の型をFLOATとDECIMALにしようとしましたが、同じエラーが発生します。これを文字列やNULLにすることなく、どうすればいいですか?それは可能ですか?

+1

いいえ、NaN値をMysqlのFLOAT型列に格納することはできません。許可される値はNULLまたは数値のみです。 NaN(多分負の値、大きい値/小さい値)には使用しない値を使用して解決できます。 – nacho

+0

保存しようとしている浮動小数点のサイズを知っている場合、NaNは特にIEEE浮動小数点数でエンコードされます。 「IEEE 754 NaNは、(無限大値のような)1で満たされた指数部フィールドと、(無限大値と区別されるように)仮数部の非ゼロ数値で表されます。 https://en.wikipedia.org/wiki/NaN#Floating_point – VoNWooDSoN

+0

@nacho完璧、ありがとう!それを答えとして追加したい場合は、私はそれを受け入れるでしょう –

答えて

1

いいえ、MysqlのFLOAT型の列にNaN値を格納することはできません。許可される値はNULLまたは数値のみです。 NaN(多分負の値、大きい値/小さい値)には使用しない値を使用して解決できます。

+0

そして、MySQLに* NaN *という値はありません。厳密にはPythonのnumpy/pandasエンティティです。 – Parfait

関連する問題