MySQL UPDATE 语句替换数据:根据第一列字段判断是否存在相同记录
MySQL 的 REPLACE INTO 语句是根据主键或唯一索引来判断记录是否已存在,并执行替换操作。如果你只想根据第一列字段 station_num 来判断是否有相同记录并进行替换,可以使用 UPDATE 语句来实现。以下是修改后的代码示例:
import mysql.connector
table_name = "mytable"
columns = ["station_num INT", 'employeer_name' VARCHAR(255), "dist FLOAT", 'station_time' DATETIME, 'result' VARCHAR(255)]
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()
# 遍历数据列表,根据第一列的值判断是否存在相同记录并进行替换
for data in mydata:
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, (data[1], data[2], data[3], data[4], data[0]))
if cursor.rowcount == 0:
insert_query = f"INSERT INTO {table_name} ({', '.join([column.split()[0] for column in columns])}) VALUES ({', '.join(['%s'] * len(columns))})"
cursor.execute(insert_query, data)
conn.commit()
print("数据插入成功或已替换现有数据")
# 关闭数据库连接
cursor.close()
conn.close()
在上述示例中,我们遍历数据列表,并根据第一列的值执行 UPDATE 语句来替换现有记录的值。如果 UPDATE 语句没有影响任何行(rowcount 为 0),则表示没有相同的记录存在,我们使用 INSERT INTO 语句插入新记录。
请确保在 station_num 字段上设置了唯一索引或主键,以便 UPDATE 语句可以正确判断记录是否已存在。通过这种方式,你可以根据第一列字段的值来判断是否有相同记录,并执行替换操作。
原文地址: https://www.cveoy.top/t/topic/bE7z 著作权归作者所有。请勿转载和采集!