解决pymysql.err.OperationalError: (1292, 'Truncated incorrect DOUBLE value: '合格')错误
根据你提供的错误信息,看起来是因为 MySQL 数据库中的 dist 字段的数据类型为 DOUBLE,但你尝试将字符串 '合格' 分配给该字段,导致类型不匹配的错误。
要解决这个问题,你需要确保插入正确的数据类型。如果 dist 字段必须是 DOUBLE 类型,那么你需要将 '合格' 转换为有效的浮点数。请注意,无法直接将字符串转换为浮点数,除非该字符串本身表示有效的数值。
如果你想在 dist 字段中存储表示结果的字符串,你需要将该字段的数据类型更改为 VARCHAR(255) 或其他适当的字符串类型。
下面是修改后的代码示例,假设你将 dist 字段的数据类型更改为 VARCHAR(255):
import mysql.connector
table_name = "mytable"
mydata = [(12145217, "王老五", "17.23", "2023-12-23 12:56", "合格")]
# 连接数据库
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 字段的数据类型更改为 VARCHAR(255),并将 "17.23" 作为字符串插入。请根据你的需求和数据库表的结构来调整数据类型和值。
原文地址: https://www.cveoy.top/t/topic/bGy2 著作权归作者所有。请勿转载和采集!