# 导入数据 for index, row in data.iterrows(): sql = "INSERT IGNORE INTO job_list VALUES('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')ON DUPLICATE KEY UPDATE company_name = company_name AND job_title = job_title" % ( row['职位名称'], row['地区'], row['能力要求'], row['公司名字'], row['福利待遇'], row['详情链接'], row['工作经验'], row['学历'], row['最低薪资(K)'], row['最高薪资(K)'], row['薪期']) cursor.execute(sql) # 提交更改并关闭连接 conn.commit() cursor.close() conn.close()执行后数据库中存在重复数据
时间: 2023-08-08 11:06:54 浏览: 52
根据你提供的代码,我发现在 SQL 语句中使用了 "INSERT IGNORE INTO",这个命令会尝试插入新数据,如果数据已经存在就会忽略插入操作,而不会更新数据。因此,如果你要更新已经存在的数据,可以改用 "INSERT INTO ... ON DUPLICATE KEY UPDATE" 语句。同时,你的 SQL 语句中的 "AND" 连接符有问题,应该使用逗号 "," 来分隔每个字段的赋值操作。
你可以将代码修改为以下形式:
```
for index, row in data.iterrows():
sql = "INSERT INTO job_list (job_title, area, requirements, company_name, welfare, link, experience, education, min_salary, max_salary, salary_period) VALUES('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s') ON DUPLICATE KEY UPDATE company_name = VALUES(company_name), job_title = VALUES(job_title)" % (
row['职位名称'], row['地区'], row['能力要求'], row['公司名字'], row['福利待遇'], row['详情链接'], row['工作经验'], row['学历'],
row['最低薪资(K)'], row['最高薪资(K)'], row['薪期'])
cursor.execute(sql)
# 提交更改并关闭连接
conn.commit()
cursor.close()
conn.close()
```
这样的话,如果数据表中已经存在相同的数据,就会更新该记录中的 company_name 和 job_title 字段。