我在MySQL表中有一个FLOAT
列,我试图使用Python脚本填充它。我使用这些值的大部分时间都是有效的浮点数,但有时它们是"NaN"
。因此,在插入表格时,我会检查值是否为"NaN"
,如果是,我将其设置为None
,根据我的理解,在表格中插入NULL
。这种情况没有发生,我不确定为什么。
这是Python代码:
for row in zip(plasma_potential_set, floating_potential_set):
row = [scan_result_id] + list(row)
for i in range(len(row)):
if str(row[i]).lower() == "nan":
row[i] = None
sql_insert = ('INSERT INTO langmuir_result(scan_data_id,
plasma_potential, floating_potential)'
'VALUES(%s, "%s", "%s")')
cursor.execute(sql_insert, row)
mydb.commit()
cursor.close()
以下是表格的CREATE语句:
CREATE TABLE result (result_id INT auto_increment, scan_data_id INT,
plasma_potential FLOAT, floating_potential FLOAT, PRIMARY KEY (result_id));
这是我得到的错误:
_mysql_exceptions.DataError: (1265, "Data truncated for column 'plasma_potential' at row 1")
以下是将无效值设置为None后行的样子:
[1, None, 17.4651]
为什么会发生这种情况,我该如何解决?提前谢谢。
看过这个问题,但我的情况略有不同,而且这个问题没有答案:Unable to use None (NULL) values in python mysql.connector in prepared INSERT statement
答案 0 :(得分:1)
您只需删除"
参数列表中的VALUES
即可。
将insert语句更改为:
sql_insert = ('INSERT INTO langmuir_result(scan_data_id, plasma_potential, floating_potential)'
'VALUES(%s, %s, %s)')
它将按预期工作。