使用 pandas 轻松插入数据库表 (pandas 插入数据库表)

在数据分析的过程中,使用 pandas 是必不可少的。pandas 提供了丰富的功能来处理和分析数据,其中一个比较实用的功能是将数据导入到数据库表中。本文将介绍如何使用 pandas 轻松地将数据插入到数据库表中。

一、准备数据库和数据

在本文中,我们将以 MySQL 数据库为例介绍将数据插入到数据库表中的方法。需要准备好 MySQL 数据库,并创建一个表用于存储数据。在这里,我们创建一个名为“employees”的表,用于存储员工信息。

CREATE TABLE employees (

emp_no INT NOT NULL,

birth_date DATE NOT NULL,

first_name VARCHAR(14) NOT NULL,

last_name VARCHAR(16) NOT NULL,

gender ENUM(‘M’,’F’) NOT NULL,

hire_date DATE NOT NULL,

PRIMARY KEY (emp_no)

);

接下来,准备一份包含员工信息的 CSV 文件,用于导入数据。在这里,我们使用的是经典的“Employees Sample Database”,该数据集包含了来自雇员数据库的完整数据。

二、连接数据库

在将数据插入到数据库表中之前,需要先连接到数据库。pandas 支持连接到多种数据库,包括 MySQL、SQLite、PostgreSQL 等。在这里,我们以 MySQL 为例进行介绍。

需要安装 MySQL 驱动程序。可以通过 pip 安装 mysql-connector-python 驱动程序。

pip install mysql-connector-python

接下来,使用以下代码连接到 MySQL 数据库。

import mysql.connector

mydb = mysql.connector.connect(

host=”localhost”,

user=”yourusername”,

password=”yourpassword”,

database=”yourdatabase”

)

cursor = mydb.cursor()

注:将“yourusername”、“yourpassword”和“yourdatabase”替换为您的 MySQL 用户名、密码和数据库名。

三、读取数据

在连接到数据库之后,需要读取数据并将其存储到 pandas 数据框中。可以使用 pandas 的 read_csv() 函数读取 CSV 文件,并存储为 pandas 数据框。

import pandas as pd

data = pd.read_csv(’employees.csv’)

四、数据清理和转换

在将数据插入到数据库中之前,可能需要对数据进行一些清理和转换。在这里,我们需要将数据转换为符合数据库表的格式。具体来说,我们需要进行以下操作:

– 将列名修改为数据库表的列名

– 将日期类型转换为 MySQL 的 DATE 类型

– 将字符串类型转换为 ENUM 类型

以下是代码示例:

# 将列名修改为数据库表的列名

data.rename(columns={’emp_no’: ‘EmployeeNumber’, ‘birth_date’: ‘BirthDate’, ‘first_name’: ‘FirstName’, ‘last_name’: ‘LastName’, ‘gender’: ‘Gender’, ‘hire_date’: ‘HireDate’}, inplace=True)

# 将日期类型转换为 MySQL 的 DATE 类型

data[‘BirthDate’] = pd.to_datetime(data[‘BirthDate’]).dt.strftime(‘%Y-%m-%d’)

data[‘HireDate’] = pd.to_datetime(data[‘HireDate’]).dt.strftime(‘%Y-%m-%d’)

# 将字符串类型转换为 ENUM 类型

data[‘Gender’] = data[‘Gender’].map({‘M’: ‘Male’, ‘F’: ‘Female’})

五、插入数据

现在,我们已经准备好了要插入表的数据,接下来需要将数据插入到数据库表中。可以使用 pandas 的 to_sql() 函数将数据插入到数据库表中。以下是代码示例:

table_name = ’employees’

data.to_sql(name=table_name, con=mydb, if_exists=’append’, index=False)

以上代码将数据插入到名为“employees”的表中。

六、检查数据

在将数据插入到数据库表中之后,最后一步是检查数据是否已成功插入。可以使用以下代码从数据库中读取数据,并将其存储为 pandas 数据框。

query = “SELECT * FROM employees”

cursor.execute(query)

data = pd.DataFrame(cursor.fetchall(), columns=[‘EmployeeNumber’, ‘BirthDate’, ‘FirstName’, ‘LastName’, ‘Gender’, ‘HireDate’])

print(data)

以上代码将从 database 表中检索数据,并将其存储为 pandas 数据框。我们可以使用 print() 函数检查结果是否正确。

七、

本文介绍了如何使用 pandas 轻松地将数据插入到 MySQL 数据库表中。通过连接数据库、读取数据、数据清理和转换以及插入数据等步骤,我们可以轻松地将数据插入到数据库中,并且可以轻松地检查数据是否已成功插入。pandas 提供了功能强大、易于使用的工具,使得数据分析和数据处理变得更加容易。如果您正在使用 pandas 进行数据分析,那么将数据导入到数据库表中可能是非常实用的一种技能。

相关问题拓展阅读:

python pandas to_sql将excel数据导入到MySQL数据库

其实吧, 一分钟10W条数据不能算太快,10秒10W条还差不多。 可以研究一下线程+进程来处理, 或者协程+进程。处理速度肯定能让你喊一声“!” 哈哈。

言归正传, 你说的别的MySQL是不是远程的,通过ip来连接的哈, 如果是的话那就可以理解了。 每次连接一次数据库,都有一个网络延迟的,2台电脑之间距离越远,这个延迟就越高,而每次导入数据的时间必须要加上这个延迟的时间的, 而本地测试的时候因为连接数据库的时间延迟基本可以忽略不计,所以速度要比连接远程数据库要快很多很多。

最后, 如果想要解决这个问题的话,要么把业务数据库移到本地,去掉时间延迟。 要么就用我上面说的线程+进程 或者 协程+进扮陵竖程的方式提高程序效率。如果无法把业务数据厅大库移到本地的话, 我非常推荐后者,成本也就是多学一点东西而已, 但以后可以省下非常多的时间汪坦, 效率为王嘛~

关于pandas 插入数据库表的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 使用 pandas 轻松插入数据库表 (pandas 插入数据库表)