【发布时间】:2018-01-27 03:14:09
【问题描述】:
我有一些包含 NULL、浮点数和偶尔的 Nan 的数据。我正在尝试使用 python 和 MySqldb 将此数据插入到 MySQL 数据库中。
插入语句如下:
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)
这是桌子:
CREATE TABLE langmuir_result (result_id INT auto_increment,
id INT,
current FLOAT,
voltage FLOAT,
PRIMARY KEY (result_id));
当我尝试将 NaN 插入表中时,出现此错误:
_mysql_exceptions.DataError: (1265, "Data truncated for column 'current' at row 1")
我想将 NaN 值作为浮点数或数字插入数据库,而不是字符串或 NULL。我尝试让列的类型为 FLOAT 和 DECIMAL 但得到相同的错误。我怎样才能做到这一点而不使其成为字符串或NULL?这可能吗?
【问题讨论】:
-
不,不能在 Mysql 的 FLOAT 类型列中存储 NaN 值。允许的值只有 NULL 或数字。您可以使用一些不用于 NaN 的值来解决它(可能是负数,一个大/低值)
-
如果您知道要存储的浮点数的大小,NaN 会专门编码为 IEEE 浮点数。 “IEEE 754 NaN 用填充了 1 的指数字段(如无穷大值)和有效数字中的一些非零数字表示(使它们与无穷大值不同)”en.wikipedia.org/wiki/NaN#Floating_point
-
@nacho 完美,谢谢!如果您想添加它作为答案,我会接受它
-
@VoNWooDSoN 我不知道尺寸,它是由传感器生成的
标签: python mysql python-2.7 mysql-python