使用to_sql的方式
时间: 2024-03-06 16:51:48 浏览: 123
使用 `pandas.DataFrame.to_sql()` 方法可以更简单地将 pandas DataFrame 中的数据写入到 MySQL 数据库中,示例如下:
```python
import psycopg2
import mysql.connector
import pandas as pd
from sqlalchemy import create_engine
# 连接 PostgreSQL 数据库
pg_conn = psycopg2.connect(
host="your_postgres_host",
database="your_postgres_db",
user="your_postgres_user",
password="your_postgres_password"
)
# 查询 PostgreSQL 数据库
pg_cursor = pg_conn.cursor()
pg_cursor.execute("SELECT * FROM your_postgres_table")
pg_results = pg_cursor.fetchall()
# 将查询结果转换为 pandas DataFrame
pg_df = pd.DataFrame(pg_results, columns=[desc[0] for desc in pg_cursor.description])
# 将查询结果写入 MySQL 数据库
mysql_engine = create_engine('mysql+mysqlconnector://your_mysql_user:your_mysql_password@your_mysql_host:your_mysql_port/your_mysql_db')
pg_df.to_sql('your_mysql_table', mysql_engine, if_exists='replace', index=False)
# 关闭连接
pg_cursor.close()
pg_conn.close()
```
在这个示例代码中,我们首先连接 PostgreSQL 数据库,查询数据并将查询结果转换为 pandas DataFrame。然后,我们使用 `create_engine()` 函数创建了一个 MySQL 数据库引擎,并使用 `to_sql()` 方法将 DataFrame 中的数据写入到 MySQL 数据库中。
需要注意的是,在使用 `to_sql()` 方法写入数据时,我们需要指定 MySQL 数据库的连接信息,包括用户名、密码、主机名、端口号和数据库名,并使用 `if_exists` 参数指定写入操作的行为,如 `'fail'` 表示写入失败时终止程序,`'replace'` 表示替换原有表,`'append'` 表示在原有表的基础上追加数据。同时,我们还需要使用 `index=False` 参数来去掉 DataFrame 中的行索引,以避免写入到 MySQL 数据库时出现问题。
阅读全文