在Python中,Pandas库是一个强大的数据分析工具,而与MySQL数据库的交互则可以使用pymysql或SQLAlchemy库。本实例主要展示了如何使用Pandas从MySQL数据库中读取数据以及将数据插入到新的表中。以下是对这个实例的详细解释: 导入所需的库: ```python import pandas as pd import pymysql import sys from sqlalchemy import create_engine ``` `pandas`用于数据处理,`pymysql`是Python连接MySQL数据库的库,`sys`用于系统退出,`sqlalchemy`则提供了ORM(对象关系映射)功能,方便与数据库进行交互。 接着,定义一个函数`read_mysql_and_insert()`来执行读取和插入操作: ```python def read_mysql_and_insert(): # 连接MySQL数据库 conn = pymysql.connect(host='localhost', user='user1', password='123456', db='test', charset='utf8') # 创建SQLAlchemy引擎 engine = create_engine('mysql+pymysql://user1:123456@localhost:3306/test') # 从数据库中读取数据 sql = 'select * from sum_case' df = pd.read_sql(sql, con=conn) # 将数据写入新的表 df.to_sql(name='sum_case_1', con=engine, if_exists='append', index=False) # 关闭数据库连接 conn.close() print('ok') ``` 在这个函数中,首先使用`pymysql.connect()`建立到MySQL服务器的连接,然后通过`create_engine()`创建SQLAlchemy引擎,这允许我们使用SQLAlchemy的方法与数据库进行交互。接下来,执行SQL查询(`select * from sum_case`)获取`sum_case`表中的所有数据,并将其存储在Pandas DataFrame对象`df`中。使用`df.to_sql()`方法将DataFrame内容写入新的`sum_case_1`表中,`if_exists='append'`表示如果表已存在,则追加数据,`index=False`表示不将DataFrame的索引写入数据库。 在数据库中,有两个表: 1. `sum_case`表: ```sql CREATE TABLE `sum_case` ( `type_id` tinyint(2) DEFAULT NULL, `type_name` varchar(5) DEFAULT NULL, KEY `b` (`type_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 2. `sum_case_1`表: ```sql CREATE TABLE `sum_case_1` ( `type_id` tinyint(2) DEFAULT NULL, `type_name` varchar(5) DEFAULT NULL, KEY `b` (`type_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 这两个表的结构相同,都包含`type_id`和`type_name`两个字段,`type_name`上创建了一个名为`b`的索引。 在执行程序之前,需要在MySQL中创建`user1`用户并赋予相应的权限: ```sql GRANT SELECT, UPDATE, INSERT ON test.* TO 'user1'@'localhost' IDENTIFIED BY '123456'; ``` 这使得`user1`用户可以在本地主机上对`test`数据库的所有表进行读、写和插入操作。 初始化`sum_case`表的数据: ```sql INSERT INTO sum_case (type_id, type_name) VALUES (1, 'a'), (2, 'b'), (3, 'c'); ``` 运行`read_mysql_and_insert()`函数后,`sum_case`表中的数据会被读取并追加到`sum_case_1`表中。 这个实例展示了如何利用Pandas和SQLAlchemy在Python中高效地处理MySQL数据库中的数据,包括数据的读取和写入操作,这对于数据分析师和数据科学家来说是非常常见的任务。通过这种方式,可以方便地进行数据的提取、转换和加载(ETL)流程,为后续的数据分析和处理提供便利。
- 粉丝: 3
- 资源: 911
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助