python 对a表和b表进行对比,a表是原表。b表是更新后的表,b表比a表多的行插入到a表,保存在mysql
时间: 2024-03-21 15:37:59 浏览: 17
在 Python 中,可以使用 Pandas 库和 SQLAlchemy 库来对两个表进行对比和插入操作,并将结果保存到 MySQL 数据库中。具体的操作可以分为以下几步:
1. 使用 Pandas 的 read_csv() 函数分别读取 a 表和 b 表,得到两个 DataFrame。
```python
import pandas as pd
a_df = pd.read_csv('a_table.csv')
b_df = pd.read_csv('b_table.csv')
```
2. 对比两个 DataFrame,找出 b 表中新增的行。
```python
insert_df = b_df[~b_df.isin(a_df)].dropna()
```
3. 将新增的行插入到 a 表中。
```python
from sqlalchemy import create_engine
# 创建 MySQL 数据库连接
engine = create_engine('mysql+pymysql://username:password@host:port/database')
with engine.connect() as conn, conn.begin():
# 将 DataFrame 写入到 MySQL 数据库中
insert_df.to_sql('a_table', conn, if_exists='append', index=False)
```
以上代码中,`~b_df.isin(a_df)` 表示 b 表中不在 a 表中的行,`dropna()` 函数用于去除空值行。`create_engine()` 函数用于创建 MySQL 数据库连接,`to_sql()` 函数用于将 DataFrame 写入到 MySQL 数据库中,`if_exists='append'` 表示如果表已经存在,则新增行会被追加到表的末尾,`index=False` 表示不将 DataFrame 的索引写入到数据库中。