已有代码# 导入数据 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" % ( 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 13:06:54 浏览: 57
可以使用 MySQL 中的 `INSERT...ON DUPLICATE KEY UPDATE` 语句来进行去重操作。这个语句的作用是如果插入的数据已经存在于表中,则执行更新操作,否则执行插入操作。
在你的代码中已经使用了这个语句,只需要将 `IGNORE` 关键字移除,并将更新操作改为不做任何操作即可。修改后的代码如下:
```python
# 导入数据
for index, row in data.iterrows():
sql = "INSERT INTO job_list VALUES('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s') ON DUPLICATE KEY UPDATE company_name = company_name" % (
row['职位名称'], row['地区'], row['能力要求'], row['公司名字'], row['福利待遇'], row['详情链接'], row['工作经验'], row['学历'],
row['最低薪资(K)'],
row['最高薪资(K)'], row['薪期'])
cursor.execute(sql)
# 提交更改并关闭连接
conn.commit()
cursor.close()
conn.close()
```
这样就可以同时进行插入和去重操作了。
相关问题
# 导入数据 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()执行后数据库中存在重复数据
根据你提供的代码,我发现在 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 字段。
# 连接数据库 db = pymysql.connect( host='localhost', user='root', password='240034', charset='utf8', database='class' ) # 创建游标 cursor = db.cursor() # 查询sql sql = 'show tables' # 把sql语句交给游标执行 cursor.execute(sql) for list,contentss in zip(content,contents): if i == 0: # 创建数据表 sql = f'create table use({list} varchar(800))' cursor.execute(sql) for content in contentss: # 插入数据 # print(content) sql = 'insert ignore into use values(%s)' cursor.execute(sql,(content)) db.commit() i = i + 1 else: sql = 'alter table use add `%s` varchar(800)'%list cursor.execute(sql) for content in contentss: # 插入数据 # print(content) sql = f'insert ignore into use({list}) values(%s)' cursor.execute(sql,(content)) db.commit()
根据你提供的代码,我发现在执行创建数据表的语句时出现了问题。你在创建表时表名前添加了 use 关键字,这是不正确的,因为 use 是MySQL的关键字,不能作为表名使用。正确的做法应该是将 use 放在CREATE TABLE后面的括号中,作为表的名称。例如,你的创建表的语句应该是这样的:
```
sql = f'create table `use` ({list} varchar(800))'
```
另外,你在插入数据时也需要注意语法错误,插入数据时需要使用 INSERT INTO 语句,而不是 INSERT IGNORE INTO 语句。正确的插入数据的语句应该是这样的:
```
sql = f'insert into `use` (`{list}`) values (%s)'
```
带有参数的语句中表名和字段名需要用反引号 `` 包围起来,而不是用括号 () 包围。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)