Python如何从mysql中获取数据并以pandas下的 dataframe形式保存?

本文介绍了一种方法,使用Python和SQLAlchemy连接MySQL数据库,执行SQL语句获取数据,然后将获取的数据转换为Pandas DataFrame格式进行数据分析。此过程包括建立数据库连接、执行SQL查询、数据读取及转换。

Python如何从mysql中获取数据并以pandas下的 dataframe形式保存?

你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

结果在这里插入图片描述

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
import pandas as pd
#连接数据库
engine = create_engine(‘mysql+pymysql://root:root@localhost/mybatis’)
DBSession = sessionmaker(bind=engine)
session = DBSession()

Base = declarative_base()

conn = engine.raw_connection()
cursor = conn.cursor()
#在这里编写sql语句获取需要的数据
cursor.execute(“select * from Student”)
result = cursor.fetchall()
cursor.close()
conn.close()
#由于此时的数据以元组的形式返回所以需要下面的操作将其转换为dataframe 在这里我使用的是 元组——列表——字典——dataframe的形式

dic={}
list01=[]
list02=[]
list03=[]
list04=[]
for i in result:
list01.append(i[0])
list02.append(i[1])
list03.append(i[2])
list04.append(i[3])

dic={“ID”:list01,“name”:list02,“age”:list03,“place”:list04}
data=pd.DataFrame(dic)
print(data)

Python可以借助`pandas`和`sqlalchemy`库将DataFrame存入MySQL。具体步骤如下: 1. **安装必要的库**:需要安装`pandas`、`sqlalchemy`和`pymysql`库。可以使用以下命令进行安装: ```bash pip install pandas sqlalchemy pymysql ``` 2. **创建据库连接引擎**:使用`sqlalchemy`的`create_engine`函创建据库连接引擎。示例代码如下: ```python from sqlalchemy import create_engine engine = create_engine("mysql+pymysql://root:我的密码@localhost:3306/test1") ``` 这里的`root`是据库用户名,`我的密码`需要替换为实际的据库密码,`localhost`是据库主机地址,`3306`是端口号,`test1`是据库名[^2]。 3. **创建DataFrame**:使用`pandas`创建一个DataFrame对象,示例如下: ```python import pandas as pd import numpy as np np.random.seed(24) m = np.random.randint(0, 100, size=(100, 5)) df = pd.DataFrame(m, columns=['departmen', 'date', 'proj_class', 'support_mode', 'content']) ``` 该代码创建了一个包含随机整DataFrame,列名分别为`departmen`、`date`、`proj_class`、`support_mode`和`content`[^2]。 4. **将DataFrame存入MySQL**:使用`DataFrame`的`to_sql`方法将存入MySQL据库。示例代码如下: ```python df.to_sql(name='test_df', con=engine) ``` 这里的`name`是要存储到MySQL中的表名,`con`是前面创建的据库连接引擎[^2]。 还可以将上述步骤封装成一个类,方便复用,示例如下: ```python from sqlalchemy import create_engine import pandas as pd class MySQLUtil: def __init__(self, host, port, username, password, db, table): self.host = host self.port = port self.username = username self.password = password self.db = db self.table = table self.write_mode = 'append' self.connect_url = 'mysql+pymysql://' + username + ':' + password + '@' + host + ':' + port + '/' + db + '?charset=utf8' self.mysql_connect = create_engine(self.connect_url) def df_write_mysql(self, data): pd.io.sql.to_sql(data, self.table, self.mysql_connect, schema=self.db, if_exists=self.write_mode) print("write into mysql finish") # 使用示例 host = '127.0.0.1' port = '3306' username = 'root' password = '123456' db = 'data_base' table = 't_demo' data = { 'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'], 'year': [2000, 2001, 2002, 2001, 2002], 'pop': [1.5, 1.7, 3.6, 2.4, 2.9] } frame = pd.DataFrame(data) mysql_util = MySQLUtil(host, port, username, password, db, table) mysql_util.df_write_mysql(frame) ``` 这个类封装了将DataFrame写入MySQL的操作,通过创建`MySQLUtil`类的实例并调用`df_write_mysql`方法,可以将DataFrame据写入指定的MySQL表中[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值