Pandas操作MySQL的方法详解

  • Post category:Python

Pandas操作MySQL的方法详解

1. 安装依赖

在使用Pandas操作MySQL之前,需要安装两个依赖库:pandas和pymysql。可以使用以下命令进行安装:

pip install pandas
pip install pymysql

2. 建立MySQL连接

在使用Pandas操作MySQL之前,首先需要建立MySQL连接。可以使用pymysql库来实现。示例代码如下:

import pymysql

# 建立连接
conn = pymysql.connect(
    host='localhost',
    user='root',
    password='password',
    db='test'
)

# 关闭连接
conn.close()

3. 读取MySQL数据

在建立好MySQL连接之后,可以使用Pandas的read_sql函数来读取MySQL数据。示例代码如下:

import pandas as pd
import pymysql

# 建立连接
conn = pymysql.connect(
    host='localhost',
    user='root',
    password='password',
    db='test'
)

# 读取MySQL数据
df = pd.read_sql('SELECT * FROM my_table', conn)

# 关闭连接
conn.close()

4. 写入MySQL数据

使用Pandas写入MySQL数据需要先建立连接,然后使用to_sql函数来实现。示例代码如下:

import pandas as pd
import pymysql

# 建立连接
conn = pymysql.connect(
    host='localhost',
    user='root',
    password='password',
    db='test'
)

# 构造数据
data = {'id': [1, 2, 3], 'name': ['Tom', 'Jerry', 'Mike']}
df = pd.DataFrame(data)

# 写入MySQL
df.to_sql('my_table', conn, index=False, if_exists='replace')

# 关闭连接
conn.close()

说明:

  • index=False表示不将行索引写入MySQL中。
  • if_exists='replace'表示如果数据库中已经有名为my_table的表,那么就先删除该表,再写入新的表。

5. 示例说明

示例1:读取MySQL数据并进行数据预处理

import pandas as pd
import pymysql

# 建立连接
conn = pymysql.connect(
    host='localhost',
    user='root',
    password='password',
    db='test'
)

# 读取MySQL数据
df = pd.read_sql('SELECT * FROM my_table', conn)

# 数据预处理
df['age'] = 2022 - df['birth_year']
df = df[df['age'] > 20]

# 关闭连接
conn.close()

说明:

这个示例代码中,读取了MySQL中名为my_table的表中所有数据,并对数据进行处理,新增一列age表示当前年龄,并且筛选出年龄大于20岁的数据。

示例2:将pandas中的数据写入MySQL

import pandas as pd
import pymysql

# 建立连接
conn = pymysql.connect(
    host='localhost',
    user='root',
    password='password',
    db='test'
)

# 构造数据
data = {'id': [1, 2, 3], 'name': ['Tom', 'Jerry', 'Mike']}
df = pd.DataFrame(data)

# 写入MySQL
df.to_sql('my_table', conn, index=False, if_exists='replace')

# 关闭连接
conn.close()

说明:

这个示例代码中,建立了一个包含id和name两列的DataFrame对象,并把该对象写入MySQL名为my_table的表中。每次运行该代码,原来的my_table表会被删除,重新建立新的表。