pymysql.err.OperationalError: (1292, 'Truncated incorrect DOUBLE value: '合格') 错误解决方法
出现这个错误是因为 MySQL 数据库中的 dist 字段的类型是 FLOAT,但你尝试将字符串 '合格' 作为值插入该字段,导致类型不匹配。
要解决这个问题,你需要确保插入正确的数据类型。如果 dist 字段可以接受字符串值,你可以将该字段的类型更改为 VARCHAR(255) 或其他适当的字符串类型。如果 dist 字段必须是数值类型,你需要提供有效的数值来替代 '合格'。
请检查数据库表结构以及提供给 mydata 列表的值,确保数据类型匹配。假设 dist 字段是数值类型且你有有效的数值来替代 '合格',以下是修改后的代码示例:
import mysql.connector
table_name = "mytable"
mydata = [(12145217, "王老五", 17.23, "2023-12-23 12:56", 1.0)]
# 连接数据库
conn = mysql.connector.connect(host="localhost", user="your_username", password="your_password", database="your_database")
cursor = conn.cursor()
# 查询是否存在符合条件的记录
select_query = f"SELECT * FROM {table_name} WHERE station_num = %s"
cursor.execute(select_query, (mydata[0][0],))
result = cursor.fetchone()
# 根据查询结果执行相应的操作
if result:
# 存在记录,执行替换操作
update_query = f"UPDATE {table_name} SET employeer_name = %s, dist = %s, station_time = %s, result = %s WHERE station_num = %s"
cursor.execute(update_query, mydata[0])
conn.commit()
print("数据替换成功")
else:
# 不存在记录,执行插入操作
insert_query = f"INSERT INTO {table_name} (station_num, employeer_name, dist, station_time, result) VALUES (%s, %s, %s, %s, %s)"
cursor.execute(insert_query, mydata[0])
conn.commit()
print("数据插入成功")
# 关闭数据库连接
cursor.close()
conn.close()
在这个示例中,我将 dist 字段的值更改为浮点数 1.0。请确保提供正确的数据类型和值,以适应数据库表的结构。
原文地址: https://www.cveoy.top/t/topic/bFTw 著作权归作者所有。请勿转载和采集!