python对比两张表数据将不一样的数据写入第三张表
时间: 2024-09-06 13:02:15 浏览: 125
在Python中,你可以使用pandas库来处理这个任务。pandas提供了一套强大的数据分析工具,其中包括数据清洗、比较和操作功能。以下是使用pandas操作数据库(假设是SQL数据库通过如`sqlite3`或`sqlalchemy`连接)来对比两张表并记录差异的步骤:
1. 首先,加载数据到DataFrame,可以分别读取两张表的数据,例如:
```python
import pandas as pd
df1 = pd.read_sql_query("SELECT * FROM table1", connection)
df2 = pd.read_sql_query("SELECT * FROM table2", connection)
```
2. 比较两张表的不同:
```python
diff_df = df1.merge(df2, indicator=True, how='outer') # 添加了'result_type'列,标记哪些行来自哪一张表
diff_df = diff_df[diff_df['result_type'] != 'both']
```
3. 确定哪些是新增、删除或更改的行:
- 新增(只在df1中存在):`new_df = diff_df[df1['_merge'] == 'left_only']`
- 删除(只在df2中存在):`del_df = diff_df[df2['_merge'] == 'right_only']`
- 更新(在两表都有,但在某一方有改动):`update_df = diff_df[(diff_df['_merge'] == 'both') & (df1.columns != df2.columns)]`
4. 将结果写入新的表格:
```python
for df in [new_df, del_df, update_df]:
df['_diff_column_name'] = ['新数据', '已删除', '更新'][df['_merge']] # 假设 '_diff_column_name' 是你要添加的新列
df.to_sql('diff_table', con=connection, if_exists='append', index=False) # 插入到新的数据库表
```
注意替换上述代码中的`table1`, `table2`, `column_name`等为实际的表名和字段名,并根据需求调整。
阅读全文
相关推荐

















