📜  df to sql pandas sql achemy - SQL (1)

📅  最后修改于: 2023-12-03 15:14:40.664000             🧑  作者: Mango

将 DataFrame 插入关系型数据库中

在 Python 中,我们可以借助 pandas、SQLAlchemy、pymysql 等库实现将 DataFrame 插入关系型数据库中的操作。本文将以 MySQL 为例进行介绍。

准备工作

首先,我们需要创建一个 MySQL 数据库,并在其中创建一张表,用于保存 DataFrame 的数据。在 MySQL 中,我们可以运行以下 SQL 语句创建一张示例表格:

CREATE TABLE IF NOT EXISTS example_table (
    id INT PRIMARY KEY,
    column1 VARCHAR(255),
    column2 INT
);

接着,我们需要使用 Python 安装好以下库:

import pandas as pd
from sqlalchemy import create_engine
import pymysql

在安装 pymysql 时,可能需要提前安装 MySQL Connector/C。如果是 Mac/Linux,可以运行以下命令安装 MySQL Connector/C:

brew install mysql-connector-c
将 DataFrame 插入 MySQL

接下来,我们可以将 DataFrame 中的数据插入到 MySQL 中。我们可以通过以下代码将 DataFrame 插入 MySQL 中:

# 建立到 MySQL 数据库的连接
engine = create_engine('mysql+pymysql://root:password@localhost:3306/example_database')

# 将 DataFrame 写入到 MySQL 中的示例表格
df.to_sql('example_table', engine, if_exists='append', index=False)

在代码中,我们首先使用了 create_engine 函数建立了到 MySQL 数据库的连接。其中,mysql+pymysql 表示我们将使用 PyMySQL 库来连接 MySQL 数据库。rootpassword 分别是我们 MySQL 中的用户名和密码,localhost 表示数据库所在的主机名或者 IP 地址,3306 是 MySQL 的默认端口号。最后的 example_database 则是我们要连接的数据库名。

接着,我们使用 to_sql 函数将 DataFrame 插入 MySQL 中。其中,example_table 是我们的示例表格名,if_exists='append' 则表示如果表格已经存在,我们要将数据添加到现有表格中而不是创建一个新的表格,index=False 则表示我们不需要将 DataFrame 的索引存入 MySQL 中。

从 MySQL 中读取数据

除了将 DataFrame 插入到 MySQL 中,我们也可以从 MySQL 中读取数据,并将其转化为 DataFrame。我们可以通过以下代码读取 MySQL 中的数据:

# 读取 MySQL 中的数据
df = pd.read_sql_query('SELECT * FROM example_table', engine)

在代码中,pd.read_sql_query 函数可以将 SQL 语句的结果转化为 DataFrame。在这里,我们使用 SQL 语句 SELECT * FROM example_table 来读取 MySQL 中 example_table 表格中的所有数据。

总结

以上就是将 DataFrame 插入关系型数据库中的方法。借助 pandas、SQLAlchemy、pymysql 等库,我们可以轻松地在 Python 中实现这一操作。如果你想了解更多操作数据库的方式,可以查看 SQLAlchemy 和 pymysql 的官方文档。