Python提取数据库两张表多个字段的值进行对比
时间: 2024-02-23 18:03:23 浏览: 139
和提取两张表单个字段的值进行对比类似,只需要在SQL语句中指定需要比对的多个字段,然后使用pandas的merge函数进行合并即可。
下面是一个示例代码,假设需要比对表A中的col1、col2和col3字段和表B中的col1、col2和col3字段:
```python
import pandas as pd
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='123456', database='testdb')
# 读取表A中需要比对的字段
df1 = pd.read_sql('SELECT col1, col2, col3 FROM tableA', con=conn)
# 读取表B中需要比对的字段
df2 = pd.read_sql('SELECT col1, col2, col3 FROM tableB', con=conn)
# 合并两个DataFrame
df_merge = pd.merge(df1, df2, on=['col1', 'col2', 'col3'], how='outer', indicator=True)
# 判断是否存在缺失值
if df_merge['col1'].isnull().sum() > 0 or df_merge['col2'].isnull().sum() > 0 or df_merge['col3'].isnull().sum() > 0:
# 删除缺失值所在的行
df_diff = df_merge.dropna(subset=['col1', 'col2', 'col3'])
# 输出不同的数据
print(df_diff)
else:
print('两张表中的数据完全相同')
# 关闭数据库连接
conn.close()
```
需要注意的是,在SQL语句中需要指定需要比对的多个字段,并且在pandas的merge函数中需要指定所有需要比对的字段。
阅读全文